我正在尝试存储来自 Kinect 传感器的多个源(颜色、深度和红外)的视频文件。
这是图像我使用 cv2.imshow 命令可视化
使用以下代码:
cv2.imshow("ir", ir / 65535.)
cv2.imshow("depth", depth / 4500.)
cv2.imshow("color", color)
IR 和深度都是数组,大小为(height, width)
, float32
。颜色是一个大小为的数组(height, width, 3)
,其中 3 是 RGB 通道,uint8
键入 0-255。由于 IR 和深度的值很大,我们需要使用上面的代码对它们进行标准化。这段代码给出了上面的数字。
现在我想将一系列图像数组存储为视频文件。我使用以下代码:
ir_video = cv2.VideoWriter('ir.mp4', cv2.VideoWriter_fourcc(*'MP42'), fps, (height, width), False)
depth_video = cv2.VideoWriter('depth.mp4', cv2.VideoWriter_fourcc(*'MP42'), fps, (height, width), False)
color_video = cv2.VideoWriter('color.mp4', cv2.VideoWriter_fourcc(*'MP42'), fps, (height, width), True)
for ir, depth, color in zip(ir_frames, depth_frames, color_frames):
ir_video.write(ir / 65535.)
depth_video.write(depth / 4500.)
color_video.write(color)
ir_video.release()
depth_video.release()
color_video.release()
彩色视频效果很好,看起来与cv2.imshow
命令。但是,IR 和深度视频已损坏。全部 0kb。
我尝试将 fourcc 代码更改为cv2.VideoWriter_fourcc(*'mp4v')
。这次红外保存了一个我可以播放的视频。但它与cv2.imshow
结果。显示的是here.
我想知道如何正确保存结果cv2.imshow
命令。应该使用什么 fourcc 代码?多谢!