2013-01-04 61 views
4

我試圖代碼在python的OpenCV-2.4.3,這是給我一個錯誤,如下認可或不支持數組類型

Traceback (most recent call last): 
File "/home/OpenCV-2.4.3/cam_try.py", line 6, in <module> 
cv2.imshow('video test',im) 
error: /home/OpenCV-2.4.3/modules/core/src/array.cpp:2482: error: (-206)   Unrecognized or unsupported array type in function cvGetMat 

我不理解這是什麼意思,有人可以幫我嗎? Thankyou。

+0

在您啓動攝像頭程序後立即發生錯誤?或者在幾幀成功返回後發生? –

回答

4

錯誤信息的相關片段是Unrecognized or unsupported array type in function cvGetMatcvGetMat()函數將數組轉換爲Mat。 A Mat是OpenCV在C/C++世界中使用的矩陣數據類型(注意:您正在使用的Python OpenCV接口使用Numpy陣列,然後在後臺將其轉換爲Mat陣列)。考慮到這種背景,問題似乎是,您傳遞給cv2.imshow()的陣列im形成不良。兩個想法:

  1. 這可以通過你的攝像頭古怪的行爲造成的......對某些相機空幀返回不時。在將im數組傳遞給imshow()之前,請嘗試確保它不爲空。

  2. 如果幀中出現錯誤,然後消除一些你正在做的處理和呼叫cv2.imshow()你搶用攝像頭幀之後。如果仍然不起作用,那麼你會知道這是你的攝像頭的問題。否則,請逐行添加處理程序,直到找出問題。例如,開始與此:

    while True: 
        # Grab frame from webcam 
        retVal, image = capture.read(); # note: ignore retVal 
    
    # faces = cascade.detectMultiScale(image, scaleFactor=1.2, minNeighbors=2, minSize=(100,100),flags=cv.CV_HAAR_DO_CANNY_PRUNING); 
    
        # Draw rectangles on image, and then show it 
    # for (x,y,w,h) in faces: 
    #  cv2.rectangle(image, (x,y), (x+w,y+h), 255) 
        cv2.imshow("Video", image) 
    
        i += 1; 
    

來源:Related Question: OpenCV C++ Video Capture does not seem to work

+0

非常感謝,我急切地等待着您的回覆。是的,它在cv2.imshow中有一些問題。當我嘗試打印圖像時,它是None.IS它是攝像頭的問題?但它適用於舊版本的簡單視頻捕獲代碼。當我嘗試單獨打印時,它顯示>>>捕獲 >>>級聯 >>>打印圖像。我該怎麼辦?? – shreya

+0

你在哪裏打印圖像?如果在capture.read()之後它是None,那麼檢查可能包含錯誤代碼的retVal變量。否則告訴我你在哪裏打印它。 –

+0

我使用python空閒作爲編輯器,當我打印它作爲none和retVal作爲False。 – shreya

0

我在Windows工作與opencv的2.3.1和Python 2.7.2,所以,我有同樣的問題,我解決它會粘貼以下DLL文件:opencv_ffmpeg.dll和opencv_ffmpeg_64.dll在Python的安裝文件夾中。也許它可以幫助你在Ubuntu中使用類似的解決方案。

0

對於我來說,就像加布坎一樣,我複製opencv_ffmpeg245.dll我的Python代碼的文件夾。然後它工作。

3

我有相同的錯誤,和有關搜索的誤差的小時之後,我發現被不適當地限定的路徑圖像。它解決了我的問題,可能會解決你的問題。

1

我通過使用BGR圖片解決了porblem。我的攝像頭默認是YUYV!

相關問題