我正在尝试将matplotlib中的colormap应用到OpenCv Image(我知道我可以使用其他库,但我正在使用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()
来电中显示的图片?
答案 0 :(得分:1)
imwrite
期望颜色值在[0,255]范围内。但是,colormap返回范围[0,1]中的颜色值。因此,这给出了期望的结果:
cv2.imwrite("colorized.jpg", colorized*255)