2015-04-05 304 views
0

我正在嘗試將以下代碼片段用於將捕獲的視頻存儲到文件中。實時流得到正確顯示,但無論我錄製視頻的長度如何,目標文件都是5.7kB文件,不包含任何視頻。VideoWriter在OpenCV中只輸出一個5.7kB的文件Python

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

有沒有人有任何想法我可能會做錯在這裏?

請幫忙弄清楚。

回答

0

這可能是因爲您的機器不支持/安裝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導出幀視頻文件),然後重試原代碼。