【问题标题】:python: when reading and saving a image the color changepython:读取和保存图像时,颜色会发生变化
【发布时间】:2018-12-30 10:18:38
【问题描述】:

我尝试使用 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:

你能帮我理解我做错了什么吗?为什么颜色会变?

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

谢谢, 呸呸呸

选项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')

【问题讨论】:

  • 保存前,能否将图像显示在屏幕上,看看颜色是否变化。
  • 仅供参考:您也可以尝试使用tifffile
  • 与 tifffile 的结果相同,代码如下: image = tiff.imread(file_path) tiff.imsave('tifffile.tif', image)
  • 显示图像时的颜色变化(不保存仅加载)。我用过: plt.imshow(img, interpolation='nearest') plt.show()

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


【解决方案1】:

认为 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

您可以使用 ImageMagickidentify 命令查看嵌入的配置文件和有关图像的其他信息:

magick identify -verbose OneOfYourImages.tiff

【讨论】:

    猜你喜欢
    • 2022-08-21
    • 2018-09-17
    • 2019-12-04
    • 1970-01-01
    • 2020-03-14
    • 2017-01-24
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    相关资源
    最近更新 更多