我有一个带有灰度图像的np.array,我想应用一个色彩Map表,然后将结果保存到视频文件中。
有了这段代码(或注解行),我得到了一个灰度视频。你知道为什么我不能有一个色彩Map视频吗?
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)。
2条答案
按热度按时间7y4bm7vi1#
cvtColor
不会这样做。对于任何灰度像素,它为您提供了RGB/BGR像素,该像素看起来是灰色的,具有相同的强度。如果你想要色彩Map表,你需要
applyColorMap
。字符串
x1c 0d1x的数据
了解更多
t5fffqht2#
OpenCV(cv2)可以将色彩Map表应用于图像并保存它。然而,OpenCV的色彩Map函数期望图像数据为8位格式,因此您需要将归一化深度Map缩放到范围[0,255],并在应用色彩Map之前将其转换为8位格式。因此,如果您有
floating point precision
数据,并且您希望在其上应用色彩Map表,请使用matplotlib
。一个简单的用例字符串