OpenCv - cv2.VideoWriter对象没有属性release

3 投票
2 回答
3941 浏览
提问于 2025-04-18 00:25

我在64位的Linux机器上使用Python 2.7.3和OpenCV。我想从我的Logitech C270摄像头获取视频帧,并把它们存储为AVI格式的视频。代码运行得很好,摄像头也能正常捕捉视频,输出文件也创建成功。但是,当我尝试播放这个文件时,它根本无法播放,同时在终端上出现了'cv2.VideoWriter对象没有release属性'的错误。所以,如果有人能告诉我,如何在完成后释放cv2.VideoWriter的话,我将非常感激。

import numpy as np
import cv2

cap = cv2.VideoCapture(1)

fourcc = cv2.cv.CV_FOURCC('X','V','I','D')
out = cv2.VideoWriter('output.avi', fourcc, 20.0,(640,480))

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

    if ret==True:

        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        out.write(gray)
        cv2.imshow('frame',gray)

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

    else:
        break

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

2 个回答

-1

与其使用这一行代码

fourcc = cv2.cv.CV_FOURCC('X','V','I','D')

不如使用这一行

fourcc = cv2.VideoWriter_fourcc(*'XVID')
0

与其使用下面这些代码:

fourcc = cv2.cv.CV_FOURCC('X','V','I','D')
out = cv2.VideoWriter('output.avi', fourcc, 20.0,(640,480))

不如使用这些代码:

fourcc = cv2.VideoWriter_fourcc(*'DIVX')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (int(cap.get(3)),int(cap.get(4))))

我觉得这样做会对你有帮助。

撰写回答