Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
ea911d34
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
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,发现更多精彩内容 >>
提交
ea911d34
编写于
7月 14, 2016
作者:
T
thierry
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
remove 2-channel png encoder/decoder support
上级
d40e46bc
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
11 addition
and
12 deletion
+11
-12
modules/imgcodecs/src/grfmt_png.cpp
modules/imgcodecs/src/grfmt_png.cpp
+6
-12
modules/imgcodecs/src/loadsave.cpp
modules/imgcodecs/src/loadsave.cpp
+5
-0
未找到文件。
modules/imgcodecs/src/grfmt_png.cpp
浏览文件 @
ea911d34
...
...
@@ -187,27 +187,22 @@ bool PngDecoder::readHeader()
if
(
bit_depth
<=
8
||
bit_depth
==
16
)
{
png_get_tRNS
(
png_ptr
,
info_ptr
,
&
trans
,
&
num_trans
,
&
trans_values
);
switch
(
color_type
)
{
case
PNG_COLOR_TYPE_RGB
:
case
PNG_COLOR_TYPE_PALETTE
:
png_get_tRNS
(
png_ptr
,
info_ptr
,
&
trans
,
&
num_trans
,
&
trans_values
);
if
(
num_trans
>
0
)
m_type
=
CV_8UC4
;
else
m_type
=
CV_8UC3
;
break
;
case
PNG_COLOR_TYPE_GRAY_ALPHA
:
case
PNG_COLOR_TYPE_RGB_ALPHA
:
m_type
=
CV_8UC4
;
break
;
case
PNG_COLOR_TYPE_GRAY_ALPHA
:
m_type
=
CV_8UC2
;
break
;
default:
if
(
num_trans
>
0
)
m_type
=
CV_8UC2
;
else
m_type
=
CV_8UC1
;
m_type
=
CV_8UC1
;
}
if
(
bit_depth
==
16
)
m_type
=
CV_MAKETYPE
(
CV_16U
,
CV_MAT_CN
(
m_type
));
...
...
@@ -230,7 +225,7 @@ bool PngDecoder::readData( Mat& img )
volatile
bool
result
=
false
;
AutoBuffer
<
uchar
*>
_buffer
(
m_height
);
uchar
**
buffer
=
_buffer
;
int
color
=
img
.
channels
()
>
2
;
int
color
=
img
.
channels
()
>
1
;
if
(
m_png_ptr
&&
m_info_ptr
&&
m_end_info
&&
m_width
&&
m_height
)
{
...
...
@@ -247,7 +242,7 @@ bool PngDecoder::readData( Mat& img )
else
if
(
!
isBigEndian
()
)
png_set_swap
(
png_ptr
);
if
(
img
.
channels
()
!=
4
&&
img
.
channels
()
!=
2
)
if
(
img
.
channels
()
<
4
)
{
/* observation: png_read_image() writes 400 bytes beyond
* end of data when reading a 400x118 color png
...
...
@@ -272,7 +267,7 @@ bool PngDecoder::readData( Mat& img )
png_set_gray_1_2_4_to_8
(
png_ptr
);
#endif
if
(
CV_MAT_CN
(
m_type
)
>
2
&&
color
)
if
(
(
m_color_type
&
PNG_COLOR_MASK_COLOR
)
&&
color
)
png_set_bgr
(
png_ptr
);
// convert RGB to BGR
else
if
(
color
)
png_set_gray_to_rgb
(
png_ptr
);
// Gray->RGB
...
...
@@ -413,7 +408,6 @@ bool PngEncoder::write( const Mat& img, const std::vector<int>& params )
png_set_IHDR
(
png_ptr
,
info_ptr
,
width
,
height
,
depth
==
CV_8U
?
isBilevel
?
1
:
8
:
16
,
channels
==
1
?
PNG_COLOR_TYPE_GRAY
:
channels
==
2
?
PNG_COLOR_TYPE_GRAY_ALPHA
:
channels
==
3
?
PNG_COLOR_TYPE_RGB
:
PNG_COLOR_TYPE_RGBA
,
PNG_INTERLACE_NONE
,
PNG_COMPRESSION_TYPE_DEFAULT
,
PNG_FILTER_TYPE_DEFAULT
);
...
...
modules/imgcodecs/src/loadsave.cpp
浏览文件 @
ea911d34
...
...
@@ -452,6 +452,8 @@ static bool imwrite_( const String& filename, const Mat& image,
Mat
temp
;
const
Mat
*
pimage
=
&
image
;
CV_Assert
(
image
.
channels
()
==
1
||
image
.
channels
()
==
3
||
image
.
channels
()
==
4
);
ImageEncoder
encoder
=
findEncoder
(
filename
);
if
(
!
encoder
)
CV_Error
(
CV_StsError
,
"could not find a writer for the specified extension"
);
...
...
@@ -588,6 +590,9 @@ bool imencode( const String& ext, InputArray _image,
{
Mat
image
=
_image
.
getMat
();
int
channels
=
image
.
channels
();
CV_Assert
(
channels
==
1
||
channels
==
3
||
channels
==
4
);
ImageEncoder
encoder
=
findEncoder
(
ext
);
if
(
!
encoder
)
CV_Error
(
CV_StsError
,
"could not find encoder for the specified extension"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录