【发布时间】:2021-07-13 18:44:44
【问题描述】:
我有一组二进制图像,1 或 0。为了提供更多上下文,这些图像是蒙版,因此图像大部分是黑色的,并且显示一些白点。每个图像都是序列的一部分,我想将序列保存为视频,以查看斑点的演变过程。现在我只有很少的图片,在 7 到 20 之间,我有以下代码:
# predictedMasks is a list containing each mask that I want to see in the video
videoName = sequenceName + '.avi'
fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')
fps = 1
frame_width = np.size(predictedMasks[0], 1)
frame_height = np.size(predictedMasks[0], 0)
incolor = False
out = cv2.VideoWriter(videoName, fourcc, fps, (frame_width, frame_height), incolor)
for mask in predictedMasks:
out.write(mask)
out.release()
现在,当我尝试从我的文件夹中打开视频时,它什么也没有显示,只有黑屏,尽管据我所知它应该显示白点。我正在使用 Windows 10,我还尝试使用以下方法更改编解码器:
videoName = sequenceName + '.mp4'
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
这会导致同样的问题。是不是我做错了什么?
编辑:
感谢下面的答案,我发现问题是我必须将布尔值更改为“uint8”,然后将图像中的所有 1 更改为 255!编辑后的代码如下:
out = cv2.VideoWriter(videoName, fourcc, fps, (frame_width, frame_height), incolor)
for mask in predictedMasks:
mask = mask.astype('uint8')
mask = np.where(mask == 1, 255, mask)
out.write(mask)
out.release()
【问题讨论】: