Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
a7805301
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a7805301
编写于
7月 21, 2015
作者:
V
Vadim Pisarevsky
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #4201 from sturkmen72:new_function_imread_reduced
上级
e26b941e
7b7d54df
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
57 addition
and
3 deletion
+57
-3
modules/imgcodecs/include/opencv2/imgcodecs.hpp
modules/imgcodecs/include/opencv2/imgcodecs.hpp
+8
-0
modules/imgcodecs/src/grfmt_base.cpp
modules/imgcodecs/src/grfmt_base.cpp
+8
-0
modules/imgcodecs/src/grfmt_base.hpp
modules/imgcodecs/src/grfmt_base.hpp
+2
-0
modules/imgcodecs/src/grfmt_jpeg.cpp
modules/imgcodecs/src/grfmt_jpeg.cpp
+6
-2
modules/imgcodecs/src/loadsave.cpp
modules/imgcodecs/src/loadsave.cpp
+32
-1
modules/imgcodecs/src/precomp.hpp
modules/imgcodecs/src/precomp.hpp
+1
-0
未找到文件。
modules/imgcodecs/include/opencv2/imgcodecs.hpp
浏览文件 @
a7805301
...
...
@@ -131,6 +131,14 @@ returns an empty matrix ( Mat::data==NULL ). Currently, the following file forma
*/
CV_EXPORTS_W
Mat
imread
(
const
String
&
filename
,
int
flags
=
IMREAD_COLOR
);
/** @brief Loads and resizes down an image from a file.
@anchor imread_reduced
@param filename Name of file to be loaded.
@param flags Flag that can take values of @ref cv::ImreadModes
@param scale_denom
*/
CV_EXPORTS_W
Mat
imread_reduced
(
const
String
&
filename
,
int
flags
=
IMREAD_COLOR
,
int
scale_denom
=
1
);
/** @brief Loads a multi-page image from a file. (see imread for details.)
@param filename Name of file to be loaded.
...
...
modules/imgcodecs/src/grfmt_base.cpp
浏览文件 @
a7805301
...
...
@@ -52,6 +52,7 @@ BaseImageDecoder::BaseImageDecoder()
m_width
=
m_height
=
0
;
m_type
=
-
1
;
m_buf_supported
=
false
;
m_scale_denom
=
1
;
}
bool
BaseImageDecoder
::
setSource
(
const
String
&
filename
)
...
...
@@ -81,6 +82,13 @@ bool BaseImageDecoder::checkSignature( const String& signature ) const
return
signature
.
size
()
>=
len
&&
memcmp
(
signature
.
c_str
(),
m_signature
.
c_str
(),
len
)
==
0
;
}
int
BaseImageDecoder
::
setScale
(
const
int
&
scale_denom
)
{
int
temp
=
m_scale_denom
;
m_scale_denom
=
scale_denom
;
return
temp
;
}
ImageDecoder
BaseImageDecoder
::
newDecoder
()
const
{
return
ImageDecoder
();
...
...
modules/imgcodecs/src/grfmt_base.hpp
浏览文件 @
a7805301
...
...
@@ -67,6 +67,7 @@ public:
virtual
bool
setSource
(
const
String
&
filename
);
virtual
bool
setSource
(
const
Mat
&
buf
);
virtual
int
setScale
(
const
int
&
scale_denom
);
virtual
bool
readHeader
()
=
0
;
virtual
bool
readData
(
Mat
&
img
)
=
0
;
...
...
@@ -81,6 +82,7 @@ protected:
int
m_width
;
// width of the image ( filled by readHeader )
int
m_height
;
// height of the image ( filled by readHeader )
int
m_type
;
int
m_scale_denom
;
String
m_filename
;
String
m_signature
;
Mat
m_buf
;
...
...
modules/imgcodecs/src/grfmt_jpeg.cpp
浏览文件 @
a7805301
...
...
@@ -242,8 +242,12 @@ bool JpegDecoder::readHeader()
{
jpeg_read_header
(
&
state
->
cinfo
,
TRUE
);
m_width
=
state
->
cinfo
.
image_width
;
m_height
=
state
->
cinfo
.
image_height
;
state
->
cinfo
.
scale_num
=
1
;
state
->
cinfo
.
scale_denom
=
m_scale_denom
;
m_scale_denom
=
1
;
// trick! to know which decoder used scale_denom see imread_
jpeg_calc_output_dimensions
(
&
state
->
cinfo
);
m_width
=
state
->
cinfo
.
output_width
;
m_height
=
state
->
cinfo
.
output_height
;
m_type
=
state
->
cinfo
.
num_components
>
1
?
CV_8UC3
:
CV_8UC1
;
result
=
true
;
}
...
...
modules/imgcodecs/src/loadsave.cpp
浏览文件 @
a7805301
...
...
@@ -234,10 +234,11 @@ enum { LOAD_CVMAT=0, LOAD_IMAGE=1, LOAD_MAT=2 };
* LOAD_MAT=2
* }
* @param[in] mat Reference to C++ Mat object (If LOAD_MAT)
* @param[in] scale_denom Scale value
*
*/
static
void
*
imread_
(
const
String
&
filename
,
int
flags
,
int
hdrtype
,
Mat
*
mat
=
0
)
imread_
(
const
String
&
filename
,
int
flags
,
int
hdrtype
,
Mat
*
mat
=
0
,
int
scale_denom
=
1
)
{
IplImage
*
image
=
0
;
CvMat
*
matrix
=
0
;
...
...
@@ -261,6 +262,9 @@ imread_( const String& filename, int flags, int hdrtype, Mat* mat=0 )
return
0
;
}
/// set the scale_denom in the driver
decoder
->
setScale
(
scale_denom
);
/// set the filename in the driver
decoder
->
setSource
(
filename
);
...
...
@@ -316,6 +320,12 @@ imread_( const String& filename, int flags, int hdrtype, Mat* mat=0 )
return
0
;
}
int
testdecoder
=
decoder
->
setScale
(
scale_denom
);
// if decoder is JpegDecoder then testdecoder will be 1
if
(
(
scale_denom
>
1
)
&
(
testdecoder
>
1
)
)
{
resize
(
*
mat
,
*
mat
,
Size
(
size
.
width
/
scale_denom
,
size
.
height
/
scale_denom
));
}
return
hdrtype
==
LOAD_CVMAT
?
(
void
*
)
matrix
:
hdrtype
==
LOAD_IMAGE
?
(
void
*
)
image
:
(
void
*
)
mat
;
}
...
...
@@ -411,6 +421,27 @@ Mat imread( const String& filename, int flags )
return
img
;
}
/**
* Read an image and resize it
*
* This function merely calls the actual implementation above and returns itself.
*
* @param[in] filename File to load
* @param[in] flags Flags you wish to set.
* @param[in] scale_denom Scale value
*/
Mat
imread_reduced
(
const
String
&
filename
,
int
flags
,
int
scale_denom
)
{
/// create the basic container
Mat
img
;
/// load the data
imread_
(
filename
,
flags
,
LOAD_MAT
,
&
img
,
scale_denom
);
/// return a reference to the data
return
img
;
}
/**
* Read a multi-page image
*
...
...
modules/imgcodecs/src/precomp.hpp
浏览文件 @
a7805301
...
...
@@ -47,6 +47,7 @@
#include "opencv2/core/utility.hpp"
#include "opencv2/core/private.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/imgcodecs/imgcodecs_c.h"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录