如何使用OpenCV将色彩Map表应用于灰度数据

am46iovg  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(146)

我有一个带有灰度图像的np.array,我想应用一个色彩Map表,然后将结果保存到视频文件中。
有了这段代码(或注解行),我得到了一个灰度视频。你知道为什么我不能有一个色彩Map视频吗?

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

字符串
更新:我想有一个彩色的图像,使像素强度的差异可以更明显。(例如在plt.imshow('viridis ')中使用默认的cmap)。

7y4bm7vi

7y4bm7vi1#

cvtColor不会这样做。对于任何灰度像素,它为您提供了RGB/BGR像素,该像素看起来是灰色的,具有相同的强度。
如果你想要色彩Map表,你需要applyColorMap

  1. import numpy as np
  2. import cv2 as cv
  3. gray_image = ... # get it from somewhere
  4. colormapped_image = cv.applyColorMap(gray_image, cv.COLORMAP_JET)

字符串
x1c 0d1x的数据
了解更多

t5fffqht

t5fffqht2#

OpenCV(cv2)可以将色彩Map表应用于图像并保存它。然而,OpenCV的色彩Map函数期望图像数据为8位格式,因此您需要将归一化深度Map缩放到范围[0,255],并在应用色彩Map之前将其转换为8位格式。因此,如果您有floating point precision数据,并且您希望在其上应用色彩Map表,请使用matplotlib。一个简单的用例

  1. import matplotlib.pyplot as plt
  2. import matplotlib.cm as cm
  3. # Normalize the depth map
  4. depth_map_normalized = np.clip(depth_map / 65000.0, 0, 1)
  5. # Apply a colormap
  6. depth_map_colored = cm.jet(depth_map_normalized)
  7. # Save the result
  8. plt.imsave('depth_map_colored.png', depth_map_colored)

字符串

相关问题