python:读取和保存图像时颜色变化

时间:2018-12-30 10:18:39

标签: python image scipy python-imaging-library cv2

我尝试使用cv2,PIL,scipy使用python加载和保存图像,但是保存的图像与原始图像相比颜色有所不同。

我正在加载并保存tif格式,所以我希望没有颜色变化。

链接到我正在使用的图像: https://data.csail.mit.edu/graphics/fivek/img/tiff16_c/a0486-jmac_MG_0791.tif

the difference between loaded image and saved image is:

您能帮助我了解我做错了什么吗?为什么颜色会改变?

更新: 问题是因为图像是原色rgb颜色。 有谁知道我如何将一批照片从prophoto rgb转换为rgb?

谢谢, yoav

选项1:

img = imread(file_name)
imsave('imread.tif', img)

选项2:

img = cv2.imread(file_name)
cv2.imwrite('cv2.tif', img)

选项3:

img = Image.open(file_name)
img.save('pil.tif')

1 个答案:

答案 0 :(得分:0)

思考 OpenCV对计算机视觉更感兴趣-即检测和测量对象等而不是打印或高质量的图像复制,编辑和打印,因此它几乎忽略了ICC配置文件。如果有人知道的更好,我很乐意得到纠正。

您可以使用 ImageMagick 将图像从一种格式转换为另一种格式,并执行许多其他操作,其中之一是更改颜色配置文件。因此,我认为,如果您转到this website并下载sRGB配置文件(我选择了第一个名称为“ preference” 的配置文件)并将其另存为sRGB.icc,您可以在终端中使用以下命令将ProPhoto图像之一更改为普通sRGB图像:

convert input.tif -profile sRGB.icc output.tiff

尝试一下,看看是否可行。如果是这样,制作图像的副本,然后在副本上运行mogrify一口气完成全部工作-请小心并像我建议的那样进行复制,因为这样做会非常快速更改您的所有图片...

magick mogrify -profile sRGB.icc *tif

您可以使用 ImageMagick identify命令来查看嵌入的配置文件以及有关图像的其他信息的负载:

magick identify -verbose OneOfYourImages.tiff