我有一个带有灰度图像的 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)
关于python - 如何使用 OpenCV 将色彩图应用于灰度数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70168026/