2011-05-02 40 views
1

我在WinXP筆記本電腦上運行Python2.7.1和OpenCV 2.2時沒有出現問題,並編寫了一個無故障工作的跟蹤程序。但出於一些奇怪的原因,我無法獲得相同的程序在我試圖安裝OpenCV和Python的任何其他計算機上運行(使用相同的二進制文件或適當的64位二進制文​​件)。在那些計算機上OpenCV似乎被正確安裝(雖然我只在筆記本電腦的攝像頭中測試過CaptureFromCamera()),但CaptureFromFile()返回'None'並在QueryFrame後給出「error:Array should CvMat or IplImage」 , 例如。CaptureFromFile()上的IplImage'None'錯誤 - Python 2.7.1和OpenCV 2.2 WinXP

這個簡單的代碼:

進口CV/
錄像檔案= cv.CaptureFromFile( 'a.avi')/
幀= cv.QueryFrame(錄像檔案)/
打印類型(錄像檔案)/
打印類型(幀)

回報:

類型 'cv.Capture'/
類型 'NoneType'

  • 的OpenCV和Python是在Windows路徑...
  • 我提出OpenCV的站點包的內容來回的Pyhton27庫\站點包文件夾。
  • 我試過不同的avi文件(以防萬一它是一些編解碼器問題)。該AVI使用MJPEG編碼(並且GSpot報告ffdshow視頻解碼器用於讀取)。
  • 圖片工作正常(我認爲):簡單的轉換代碼: im = cv.LoadImageM(「c:\ tests \ colormap3.tif」) cv.SaveImage(「c:\ tests \ colormap3-out.png 「,im) 打開,轉換並保存新圖像...
  • 我已經測試過不同文件夾中的AVI文件,使用」c:\「,」c:/「,」c:\「和」c ://」。

我迷失在這裏......任何人都知道什麼愚蠢的和不小心的錯誤可能是這個原因嗎?謝謝

回答

0

這必須是默認編解碼器的問題。 OpenCV使用蠻力方法打開視頻文件或從相機捕獲。它通過所有來源/編解碼器/ apis的試驗和錯誤,它可以找到一些合理的順序。 (至少1.1是這樣做的)。這意味着在n個不同的系統(或幾天)中,您可能會獲得n種不同的訪問同一視頻的方式。例如,多個網絡攝像頭的順序也是非確定性的,並且可能取決於堵塞順序或蝴蝶。

找出您的筆記本電腦使用什麼,(重新)安裝在所有系統上並重試。 此外,在c版本中,您可以查看捕獲的屬性 查找cvGetCaptureProperty和cvSetCaptureProperty,您可以在其中提示該格式。

[編輯] 剛看了我的文檔,這些功能也可在Python中使用。看一看,它應該有所幫助。

+0

AndreasT:謝謝你的提示(我也懷疑它是ffdshow不兼容的地方);然而CaptureProperties函數不工作,因爲捕獲未初始化(對象被實例化但仍然爲空)...但是對於文件本身的編碼沒有問題,因爲沒有文件工作 - 甚至不是默認的「樹」。 avi「文件的OpenCV示例。 – 2011-05-02 17:24:16

1

這可能聽起來很愚蠢,但對於相同的代碼片段(Python 2.7.1,Win 7,OpenCV 2.2.0),我只是遇到了同樣的問題。我改變了文件的路徑從

capture = cv.CaptureFromFile('C:\Misc\tree.avi') 

capture = cv.CaptureFromFile('C:/Misc/tree.avi') 

<type 'cv.Capture'> 
<type 'cv.iplimage'> 
+0

伊利亞:謝謝你的建議,但這不是問題。我知道有時候,從/到\或甚至到\\或//解決路徑問題,我嘗試了所有這些。這是一個編解碼器問題:如果我將視頻轉換爲原始YUV,則該程序起作用。 – 2011-06-20 16:23:11

1

我是有這個問題,這是我如何固定它。我接過一看的OpenCV的cmake命令的輸出,並且它有如下一行:

... 
--  FFMPEG:      NO 
... 

爲了解決這個問題,你也許能簡單地安裝下列庫閃避:

sudo apt-get install libavformat-dev libavcodec-dev libavfilter-dev libswscale-dev 

重新運行cmake將有希望現在說:

... 
--  FFMPEG:      YES 
... 

重新編譯OpenCV的,重新安裝,並希望你現在可以讀取視頻。如果您還有問題,你可以嘗試使用--enable-shared選項編譯的ffmpeg,使用這些作爲指南:

http://opencv.willowgarage.com/wiki/FFMPEG
http://ubuntuforums.org/showthread.php?t=786095

希望有所幫助。