2011-10-10 53 views
1

我使用32位的蟒蛇與OpenCV的2.3.1灰度視頻。我正在嘗試將2維numpy數組寫入opencv視頻編寫器。我的代碼類似於:創建使用Python,OpenCV的和numpy的陣列

import cv2 as cv 
import numpy as np 

fourcc = cv.cv.CV_FOURCC('D', 'I', 'V', 'X') 
writer = cv.cv.CreateVideoWriter("test.mpg", courcc, 10, (256,256)) 
if not writer: 
    print "Error" 
    sys.exit(1) 

for ii in range(numberOfFrames):  
    numpy_image = GetFrame(ii) #Gets a random image 

    cv_image = cv.cv.CreateImage((256,256), cv.IPL_DEPTH_8U, 1) 
    cv.cv.SetData(cv_image, numpy_image.tostring(), numpy_array.dtype.itemsize*1*256) 

    cv.cv.WriteFrame(writer, cv_image) 

del writer 

我可以看到,我在我的numpy數組中有適當的數據。如果我嘗試從iplImage中讀取數據,我發現它仍然存在。但是,編寫框架似乎沒有做任何事情。沒有文件正在製作或拋出任何錯誤。我可能做錯了什麼?提前致謝。

+0

這段代碼看起來並不完整。 'GetFrame'從哪裏來(它會是'cv.cv.GetFrame')?這個代碼是什麼進口的? – heltonbiker

+0

GetFrame是一個獨立的函數,我從中獲取圖像。它與cv.cv.GetFrame()無關。 – Doomchinchilla

+0

面臨與cv2和numpy矩陣類似的問題,它給了我沒有錯誤,但它沒有寫入文件! – JustInTime

回答

1

我從來沒有使用OpenCV,但FWIW我通過管道他們mencoder(基於VokkiCoder的VideoSinkhere)寫入numpy數組視頻文件。它非常快速,似乎可靠地工作,並且還會寫入RGB視頻。

Here's a paste。它還包括一個VideoSource類閱讀電影文件numpy陣列使用非常類似的方法。