如何使用OpenCV和Python录制视频?

2024-06-26 15:04:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经看过OpenCV的Python example介绍了如何使用VideoCaptureVideoWriter来捕获和写出视频文件。但我一直在想:

OpenCV Error: Assertion failed (dst.data == dst0.data) in cvCvtColor, file 
/tmp/opencv-n8PM/opencv-2.4.7.1/modules/imgproc/src/color.cpp, line 4422
Traceback (most recent call last):
  File "examples/observer/observer.py", line 17, in <module>
    video_writer.write(frame)
cv2.error: /tmp/opencv-n8PM/opencv-2.4.7.1/modules/imgproc/src/color.cpp:4422: error: 
(-215) dst.data == dst0.data in function cvCvtColor

清理了摄像机。

代码如下:

#!/usr/bin/env python import cv2


if __name__ == "__main__":
    # find the webcam
    capture = cv2.VideoCapture(0)

    # video recorder
    fourcc = cv2.cv.CV_FOURCC(*'XVID')  # cv2.VideoWriter_fourcc() does not exist
    video_writer = cv2.VideoWriter("output.avi", fourcc, 20, (680, 480))

    # record video
    while (capture.isOpened()):
        ret, frame = capture.read()
        if ret:
            video_writer.write(frame)
            cv2.imshow('Video Stream', frame)

        else:
            break

    capture.release()
    video_writer.release()
    cv2.destroyAllWindows()

Tags: indatavideocv2frameopencvwritercapture
3条回答
在C++中,如果你可以通过1的编解码器。然后,您可以从计算机上的所有编解码器中手动选择编解码器。在python中可能是相同的,但在文档中找不到。

video_writer = cv2.VideoWriter("output.avi", -1, 20, (680, 480))

试着确保opencv可以在你的机器上找到XVID。

我也面临同样的问题。 如果问题是在帧大小和颜色的深度或在编解码器中,则应进行调试。尝试将空数组写入文件:

capSize = (100, 100) # this is the size of my source video
fourcc = cv2.cv.CV_FOURCC('m', 'p', '4', 'v')
out = cv2.VideoWriter('output.mov',fourcc, 1, capSize)
...
out.write(125 * np.ones((100,100,3), np.uint8)) 
...

帧的大小可能不正确:

w=int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH ))
h=int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT ))
# video recorder
fourcc = cv2.cv.CV_FOURCC(*'XVID')  # cv2.VideoWriter_fourcc() does not exist
video_writer = cv2.VideoWriter("output.avi", fourcc, 25, (w, h))

为我工作

相关问题 更多 >