颜色变暗: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)
第二张图颜色暗淡明显。是否有解决此问题的方法,或者我缺少某种设置参数..?
不同之处在于初始图像(图中左侧)附加了 ICC 配置文件,而第二个图像(右侧)没有。
我通过 运行 名为 identify
的 ImageMagick 实用程序获得了上面的图像,如下所示:
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-Profile,这是一个可选属性,大多数设备可能不会首先注入它。 ICC 配置文件基本上执行一种颜色校正,校正系数在校准期间为每个独特的设备计算。
现代 Web 浏览器,图像查看实用程序主要在将图像渲染到屏幕之前考虑此 ICC 配置文件信息,这就是两个图像存在差异的原因。
但不幸的是,OpenCV 不会从图像的元数据中读取 ICC 配置来执行任何颜色校正。
我对@mark 提出的关于 ICC 配置文件的观点做了一些研究。我在 python PIL 模块中找到了处理这个问题的方法。这是对我有用的代码。我还学会了使用 PNG 文件格式而不是 JPEG 来进行无损转换。
import Image
img = Image.open('originalImage.jpg')
img.save('test.jpg',icc_profile=img.info.get('icc_profile'))
我希望这对其他人也有帮助。
我正在使用opencv模块读写图像。这是代码,下面是我正在阅读的图像,第二张图像是使用 cv2.imwrite() 将其保存在磁盘上之后的图像。
import cv2
img = cv2.imread('originalImage.jpg')
cv2.imwrite('test.jpg',img)
第二张图颜色暗淡明显。是否有解决此问题的方法,或者我缺少某种设置参数..?
不同之处在于初始图像(图中左侧)附加了 ICC 配置文件,而第二个图像(右侧)没有。
我通过 运行 名为 identify
的 ImageMagick 实用程序获得了上面的图像,如下所示:
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-Profile,这是一个可选属性,大多数设备可能不会首先注入它。 ICC 配置文件基本上执行一种颜色校正,校正系数在校准期间为每个独特的设备计算。
现代 Web 浏览器,图像查看实用程序主要在将图像渲染到屏幕之前考虑此 ICC 配置文件信息,这就是两个图像存在差异的原因。
但不幸的是,OpenCV 不会从图像的元数据中读取 ICC 配置来执行任何颜色校正。
我对@mark 提出的关于 ICC 配置文件的观点做了一些研究。我在 python PIL 模块中找到了处理这个问题的方法。这是对我有用的代码。我还学会了使用 PNG 文件格式而不是 JPEG 来进行无损转换。
import Image
img = Image.open('originalImage.jpg')
img.save('test.jpg',icc_profile=img.info.get('icc_profile'))
我希望这对其他人也有帮助。