2011-04-25 55 views
3

我正嘗試使用OpenCV(以Python)創建基本視頻文件。我有下面的代碼,運行沒有任何錯誤,但我沒有看到輸出文件創建。我想知道是否有人有什麼想法。無法使用OpenCV創建基本視頻文件

from cv import * 
im1 = LoadImage("/home/spoll/laptop1.jpg") 
im2 = LoadImage("/home/spoll/laptop2.jpg") 

writer = CreateVideoWriter("/home/spoll/out", CV_FOURCC('F', 'L', 'V', '1'), 2, (im1.width, im1.height)) 
if writer is None: 
    print "Error in creating video writer" 
else: 
    print WriteFrame(writer, im1) 
    print WriteFrame(writer, im2) 

謝謝!

回答

3

你爲什麼不檢查錯誤?如果CreateVideoWriter()失敗,你永遠不會知道。

我認爲CreateVideoWriter正在返回NULL。添加適當的代碼來檢查退貨並驗證這是否爲真。

如果是這樣,問題很可能是CV_FOURCC()哪一個沒有找到編解碼器。

然後,檢查這個答案其它編解碼器:Creating AVI files in OpenCV

我還建議你更新的OpenCV到最近的可用的(我認爲它V2.2)。

編輯

你還缺少最後一個參數在CreateVideoWriter:

#!/usr/bin/env python 
import sys 

from opencv.cv import * 
from opencv.highgui import * 

im1 = cvLoadImage("img1.jpg") 
if not im1: 
    print "Could not load im1" 

im2 = cvLoadImage("img2.jpg") 
if not im2: 
    print "Could not load im2" 

fps = 4.0 
frame_size = cvGetSize(im1) 
#writer = cvCreateVideoWriter("out.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, frame_size, True) 
writer = cvCreateVideoWriter("out.avi", CV_FOURCC('F', 'L', 'V', '1'), fps, frame_size, True) 
if not writer: 
    print "Error in creating video writer" 
    sys.exit(1) 
else: 
    print cvWriteFrame(writer, im1) 
    print cvWriteFrame(writer, im2) 

cvReleaseVideoWriter(writer) 

我想有一個與OpenCV中/ Linux的/ Python的關於cvCreateVideoWriter的問題()。我會嘗試與開發者交談,並在獲得答覆時在此更新。

+0

感謝您的回覆,以取代cvReleaseVideoWriter(writer) :)我是新來的蟒蛇,很抱歉,如果這是一個愚蠢的問題,但因爲這是通過Python綁定,創建CreateVideoWriter時,我仍然檢查None嗎?我認爲它返回一個無null對象。我也嘗試了你提到的鏈接上提到的所有不同的編解碼器,並且運行OpenCV 2.2。但問題仍然存在:s還有什麼我可以嘗試的嗎?再次感謝 – iman453 2011-04-25 21:30:19

+0

我添加了一個「if writer is None:print」error「」check。是的,我有權在這個目錄下創建文件。感謝您的幫助,我非常感謝您花時間! – iman453 2011-04-25 21:49:30

+0

對不起,我用im1.width和height運行它。我不小心粘貼了錯誤的版本。對於那個很抱歉。 – iman453 2011-04-25 21:50:35