将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)
我正在尝试将来自 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)