将matplotlib颜色图应用于opencv图像

Applying matplotlib color map to opencv image

我正在尝试将来自 matplotlib 的颜色图应用到 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() 调用中显示的图像?

imwrite 期望颜色值在 [0,255] 范围内。但是,colormap returns 颜色值在 [0,1] 范围内。因此,这给出了期望的结果:

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