将 matplotlib 颜色映射应用于 OpenCV 图像

3
我将尝试将matplotlib的colormap应用到OpenCV图像上(我知道可以使用其他库,但我正在使用OpenCV处理其他内容)。
以下是可应用并显示该图像的脚本:
import cv2
from matplotlib.pylab import cm

def colorize(image, colormap):
    im = cv2.imread(image)
    im = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
    colorized = colormap(im)
    cv2.imshow("colorized", colorized)
    cv2.waitKey(0)
    cv2.imwrite("colorized.jpg", colorized)

if __name__ == "__main__":
    import sys
    colorize(sys.argv[1], cm.jet)

它的表现不错,但是“colorized.jpg”图像是黑色的。

我想我需要将它从3个颜色+alpha通道转换为3个通道的图像,但是不知道如何操作。

有没有一种方法可以正确保存imshow()调用中显示的图像?

1个回答

3

imwrite 期望的颜色值范围为 [0,255]。然而,colormap 返回的颜色值范围为 [0,1]。因此,以下操作将得到期望的结果:

cv2.imwrite("colorized.jpg", colorized*255)

你确定吗?这对我有效。你看到乘以255了吗? - hitzg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接