我已经对@mark提出的关于ICC配置文件的问题进行了一些研究。我已经找到了在Python PIL模块中处理此问题的方法。以下是对我有效的代码。我还学会了使用PNG文件格式来进行无损转换,而不是JPEG。
import Image
img = Image.open('originalImage.jpg')
img.save('test.jpg',icc_profile=img.info.get('icc_profile'))
你的第一张输入图片在元数据中有一些关联的ICC配置文件,这是一个可选属性,大多数设备可能根本不会注入它。ICC配置文件基本上执行一种颜色校正,而校正系数是在校准过程中为每个唯一的设备计算的。
现代Web浏览器、图像查看工具主要在渲染图像到屏幕之前考虑这个ICC配置文件信息,这就是为什么两张图片之间存在差异的原因。
但不幸的是,OpenCV不会从图像的元数据中读取ICC配置文件以执行任何颜色校正。