【问题标题】:image plotted using matplotlib seems to have different colors than original JPEG image使用 matplotlib 绘制的图像似乎具有与原始 JPEG 图像不同的颜色
【发布时间】:2020-03-15 09:11:38
【问题描述】:

下面的屏幕截图比较了左侧使用 matplotlib 绘制的同一图像和右侧使用 Mac 预览绘制的图像。

使用 matplotlib 绘制图像的代码也相当简单。

import matplotlib.pyplot as plt
import argparse
import skimage

parser = argparse.ArgumentParser(description='Color check.')
parser.add_argument('--image', required=False,metavar="path or URL to image")
args = parser.parse_args()

image = skimage.io.imread(args.image)
plt.imshow(image)
plt.show()

如您所见,两张图片的颜色明显不同。为什么会发生这种情况,我应该相信哪一个是正确的颜色表示?

编辑:

我使用opencv的imshow绘制了图像,看起来不错。

这里是代码:

import argparse
import cv2

windowName = "image"
cv2.namedWindow(windowName,cv2.WINDOW_NORMAL)
cv2.resizeWindow(windowName, 600,600)

parser = argparse.ArgumentParser(description='Color check.')
parser.add_argument('--image', required=False,metavar="path or URL to image")
args = parser.parse_args()

image = cv2.imread(args.image)
cv2.imshow(windowName, image)
cv2.waitKey(0)

【问题讨论】:

    标签: image macos opencv matplotlib colors


    【解决方案1】:

    分歧可能来自两个程序使用的colorspace 的不同。虽然 Mac Preview 可以识别颜色空间,因此应该使用创建/标记图像的正确颜色空间来显示图像,但 matplotlib 使用sRGB 颜色空间。

    我会说 Mac Preview 使用的颜色表示很可能是图像创建者也使用的颜色表示,因此我会选择它。

    【讨论】:

    • cv2.imshow 似乎产生了正确的图像,我猜它也使用 sRGB。想法?
    • 我认为OpenCV 可以管理不同的色彩空间,并且可能会选择正确的一个 las Mac Preview。
    猜你喜欢
    • 2023-03-08
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    相关资源
    最近更新 更多