【问题标题】:How to use OpenCV VideoWriter properly?如何正确使用 OpenCV VideoWriter?
【发布时间】:2020-04-07 21:21:06
【问题描述】:

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

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) 结束

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

【问题讨论】:

    标签: python opencv video-capture


    【解决方案1】:

    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()
    

    【讨论】:

    • 我试过你的代码,但不幸的是,它没有帮助。 (而我打印了(w, h),结果是1280, 720。
    • 如果你正在分割你的image_np。大小不能为1280,720。您可以尝试使用cv2.VideoWriter_fourcc(*'XVID') 创建您的视频吗?
    • 它没有帮助:(
    猜你喜欢
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 2016-05-26
    • 2014-06-06
    • 2015-02-01
    相关资源
    最近更新 更多