如何使用 OpenCV 将颜色图应用于灰度数据

how to apply colormap to grayscale data, with OpenCV

我有一个 np.array 灰度图像,我想应用颜色图,然后将结果保存到视频文件中。

使用这段代码(或注释行),我还是得到了一个灰度视频。知道为什么我没有彩色地图视频吗?

color_images = np.empty([N, resolution[1], resolution[0], 3])
for i in range(0, N):
    cv2.imwrite(gray_images[i])
    color_images[i] = cv2.cvtColor(np.float32(gray_images[i]), cv2.COLOR_GRAY2BGR)
    #color_images[i] = cv2.merge([gray_images[i], gray_images[i], gray_images[i]])
out = cv2.VideoWriter("video.mp4", cv2.VideoWriter_fourcc(*'mp4v'),
                      fps, (resolution[0], resolution[1]), 1)
for i in range(0, N):
    out.write(np.uint8(color_images[i]))
out.release()

更新:我想要一张彩色图像,这样像素强度的差异就会更加明显。 (例如,在 plt.imshow ('viridis') 中使用默认的 cmap)。

cvtColor 不会那样做。对于任何灰度像素,它都会为您提供看起来具有相同强度的灰色的 RGB/BGR 像素。

如果你想要颜色图,你需要applyColorMap

import numpy as np
import cv2 as cv

gray_image = ... # get it from somewhere

colormapped_image = cv.applyColorMap(gray_image, cv.COLORMAP_JET)

learn more here