cv2.videowriter写入0字节文件(python)(opencv)

问题描述 投票:0回答:2

我目前正在做一个运动检测项目,当检测到运动时记录视频。现在录制视频时没有错误,但当我检查视频时,它是 0 字节。任何帮助将非常感激。

这是我的代码:

camera = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640, 480))
python opencv video-recording
2个回答
7
投票

当您的输入帧大小与输出视频不匹配时,就会出现问题。

out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640, 480))

这里你承诺你的输出视频是640,480,这取决于你的输入源(如果你不调整它的大小)

您可以对其进行硬编码(检查输入视频或流源的帧大小)或使用以下代码:

w = cap.get(cv2.CAP_PROP_FRAME_WIDTH);
h = cap.get(cv2.CAP_PROP_FRAME_HEIGHT); 
fourcc = cv2.VideoWriter_fourcc(*'DIVX')
out = cv2.VideoWriter('output.mp4',fourcc, 15.0, (int(w),int(h)))

我的建议是在 while 循环之外抓取一个帧,并在那里声明 VideoWritter 的帧宽度和高度。 另外,如果不起作用,请尝试将编解码器从 XVID 更改为 DIVX 或 MJPG。


0
投票

相机的颜色传感器与您在函数中指定的不匹配也可能导致此问题。它可能会扩展到编写器调用中的任何不正确的参数。

out = cv2.VideoWriter('output.mp4', fourcc, 20.0, (width, height), isColor=False)

isColor 默认为 True;尝试从灰度 Basler 相机捕获时遇到了这个问题

© www.soinside.com 2019 - 2024. All rights reserved.