【问题标题】:VideoWriter outputs only a 5.7kB File in OpenCV PythonVideoWriter 在 OpenCV Python 中仅输出一个 5.7kB 的文件
【发布时间】:2015-04-05 18:52:19
【问题描述】:

我正在尝试使用以下代码将捕获的视频存储到文件中。实时流正在正确显示,但无论我录制视频的长度如何,目标文件都是一个 5.7kB 的文件,不包含任何视频。

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

fourcc= cv2.cv.FOURCC(*'DIVX')
ret=cap.set(3,500)  
ret=cap.set(4,500) 

out= cv2.VideoWriter('out.avi',fourcc,20,(500,500))

while(cap.isOpened()):  
    ret, frame = cap.read()
    if ret == True:     
        out.write(frame)

        cv2.imshow('out.avi',frame)

        if cv2.waitKey(1) &0xFF ==ord('q'):
            break
    else:
        break


cap.release()
out.release()
cv2.destroyAllWindows()

有人知道我在这里做错了什么吗?

请帮忙解决。

【问题讨论】:

    标签: python opencv video-capture


    【解决方案1】:

    这可能是因为您的机器上不支持/未安装fourcc的编码,因此无法将帧导出到视频中。它一直发生在我身上。对我有用的是mp4编解码器(在opencv中:cv2.cv.CV_FOURCC('m','p','4','v'))。所以,试试这个:

    import numpy as np
    import cv2
    
    cap = cv2.VideoCapture(0)
    
    fourcc= cv2.cv.CV_FOURCC('m', 'p', '4', 'v')
    ret=cap.set(3,500)  
    ret=cap.set(4,500) 
    
    out= cv2.VideoWriter('out.avi',fourcc,20,(500,500))
    
    while(cap.isOpened()):  
        ret, frame = cap.read()
        if ret == True:     
            out.write(frame)
    
            cv2.imshow('out.avi',frame)
    
            if cv2.waitKey(1) &0xFF ==ord('q'):
                break
        else:
            break
    
    
    cap.release()
    out.release()
    cv2.destroyAllWindows()
    

    否则,您可以尝试安装所有与ffmpeg兼容的编解码器(opencv似乎使用ffmpeg将帧导出为视频文件)并重试您的原始代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-06
      • 1970-01-01
      • 2018-05-31
      • 2013-06-24
      • 2023-01-16
      • 1970-01-01
      • 2012-05-23
      • 2017-12-16
      相关资源
      最近更新 更多