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

cv2.videowriter writes 0 bytes file (python) (opencv)

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

这是我的代码:

camera = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640, 480))

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

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。