繁体   English   中英

如何正确使用 OpenCV VideoWriter?

[英]How to use OpenCV VideoWriter properly?

我想裁剪视频的一个区域并保存它。 我使用下面的代码来做到这一点。

import cv2

cap = cv2.VideoCapture('input.avi')
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter('output.avi', fourcc, 25, (1280, 720))

while True:
    ret, image_np = cap.read()
    if not ret:
        break;

    roi = image_np[300:1020, 0:1280]
    out.write(roi)

cap.release()
out.release()

视频文件已创建,我可以在媒体播放器中观看,但如果想在 python 中读取此文件,我会收到一条错误消息。

import cv2

cap = cv2.VideoCapture('output.avi')
_, image_np = cap.read()

进程以退出代码 -1073741819 (0xC0000005) 结束

我认为问题出在我制作的视频上,但我不确定。

cv2.VideoWriter期望帧的大小与您写入的帧相同。 roi形状不是(1280, 720)

import cv2

cap = cv2.VideoCapture('input.avi')
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
out = cv2.VideoWriter('output.avi', fourcc, 25, (1280, 720))
writerInit = False
while True:
    ret, image_np = cap.read()
    if not ret:
        break;

    roi = image_np[300:1020, 0:1280]
    if(not writerInit):
        h,w,_ = roi.shape
        out = cv2.VideoWriter('output.avi', fourcc, 25, (w, h))
        writerInit = True

    out.write(roi)

cap.release()
out.release()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM