繁体   English   中英

颜色变钝:opencv cv2.imread cv2.imwrite

[英]Color gets dull: opencv cv2.imread cv2.imwrite

我正在使用opencv模块来读写图像。 这是代码,下面是我正在阅读的图像,第二个图像是在使用cv2.imwrite()将其保存在磁盘上之后。

import cv2

img = cv2.imread('originalImage.jpg')
cv2.imwrite('test.jpg',img)

原始图像

使用opencv保存的图像

可以清楚地看到第二张图像中的颜色很暗淡。 有没有解决这个问题的方法,或者我在某种设置参数上缺少..?

不同之处在于初始图像(图中左侧)具有附加的ICC配置文件,而第二个图像(右侧)没有。

在此输入图像描述

我通过运行名为identifyImageMagick实用程序获得了上面的图像:

identify -verbose first.jpg    > 1.txt
identify -verbose second.jpg   > 2.txt

然后我运行了辉煌的opendiff工具(这是macOS的一部分),如下所示:

opendiff [12].txt

您可以使用ImageMagick从第一张图像中提取ICC配置文件,如下所示:

convert first.jpg profile.icc

关于ICC简介,我已经对@mark提出了一些研究。 我已经找到了在python PIL模块中处理这个问题的方法。 这是适合我的代码。 我还学会了使用PNG文件格式而不是JPEG来进行无损转换。

import Image
img = Image.open('originalImage.jpg')
img.save('test.jpg',icc_profile=img.info.get('icc_profile'))

我希望这也有助于其他人。

您的第一个输入图像在元数据中有一些icc-Profile,这是一个可选属性,大多数设备可能不会首先注入它。 ICC配置文件基本上执行一种颜色校正,并且在校准期间为每个唯一设备计算校正系数。

现代Web浏览器,图像查看实用程序主要在将图像渲染到屏幕上之前考虑此ICC配置文件信息,这就是两个图像中存在差异的原因。

但不幸的是,OpenCV不会从图像的元数据中读取ICC配置来执行任何颜色校正。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM