繁体   English   中英

使用 openCV 在 python 中保存视频捕获:空视频

[英]Saving a video capture in python with openCV : empty video

我是 Python (2.7) 的新手,我尝试进行视频处理(使用模块 openCv“cv2”)。 从教程开始,我尝试使用本教程的脚本:段落“保存视频”。 除了我保存的视频是空的外,一切正常。 我可以在我的目录中找到 output.avi 但它的内存大小是 0kb ,当然当我运行它时,没有显示视频。

经过一些更改,这里是我的代码:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

# Define the codec and create VideoWriter object
#fourcc = cv2.VideoWriter_fourcc(*'DIVX')
fourcc = cv2.cv.CV_FOURCC(*'DIVX')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))

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

        # write the flipped frame
        out.write(frame)

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

# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()

有谁知道为什么它不能正常工作?

非常感谢。 埃德温

我从未使用过 openCV,但我敢打赌问题出在

cap = cv2.VideoCapture(0)

这是 VideoCapture 方法的 C 版本http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#videocapture

也许你可以尝试做同样的事情。 就像是

cap = cv2.VideoCapture(0)
if (not cap.isOpened()):
    print "Error"

编辑:刚刚下载了 Python 和 OpenCV,发现问题出在编解码器上。 尝试改变

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

为了

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

并手动选择编解码器。

可能是输出分辨率与输入不同。 检查盖子的宽度和高度。

size = (int(cap.get(3)), int(cap.get(4)))

更改您的相机或输出分辨率。

我有 Windows 10、Python3.7.6、OpenCV 4.2.0。 就我而言,问题在于视频编码器。 "XVID""X264"导致输出视频为空。 我将编码器更改为"DIVX" ,视频生成成功。

暂无
暂无

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

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