2014-02-16 53 views
3

我試圖運行第一個示例here,但我收到此錯誤。我使用的是Ubuntu 13.10。未能在OpenCV for Python中加載OpenCL運行時

Failed to load OpenCL runtime 
OpenCV Error: Unknown error code -220 (OpenCL function is not available: [clGetPlatformIDs]) in opencl_check_fn, file /home/cristi/opencv/modules/core/src/opencl/runtime/opencl_core.cpp, line 204 
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /home/cristi/opencv/modules/imgproc/src/color.cpp, line 3159 
Traceback (most recent call last): 
    File "/home/cristi/opencv1/src/video.py", line 11, in <module> 
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
cv2.error: /home/cristi/opencv/modules/imgproc/src/color.cpp:3159: error: (-215) scn == 3 || scn == 4 in function cvtColor 


Process finished with exit code 1 

此外,這是(在我的代碼第11行)造成麻煩線:

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 

我該怎麼辦?

回答

1

Failed to load OpenCL runtime

很可能是您的安裝有問題。如果您不使用GPU,那麼我建議您在編譯期間關閉OpenCV中的所有CUDA/OpenCL模塊。

error: (-215) scn == 3 || scn == 4 in function cvtColor

該錯誤表示您的輸入圖像應該有3個通道(BGR /彩色圖像)或4個通道(RGBA圖像)。所以請通過執行print frame.shape檢查frame中的通道數量。

由於您正在使用視頻,您的相機很有可能無法打開進行捕捉,因此未捕捉到該幀。在這種情況下,print frame.shape會說它是NoneType的數據。

我建議你用圖像而不是視頻運行相同的代碼。即使如此,如果OpenCL的錯誤出現,它很可能是您的安裝問題。如果工作正常,VideoCapture可能會出現問題。您可以檢查它在相同的教程中提到:

Sometimes, cap may not have initialized the capture. In that case, this code shows error. You can check whether it is initialized or not by the method cap.isOpened(). If it is True, OK.

+0

感謝您的幫助。你說得對,它說它是'NoneType',接下來我該怎麼辦?然而,我的原始帖子中的錯誤也發生在視頻中,而不僅僅是當我的筆記本電腦的相機被涉及時。只要在相關的情況下提及它即可。 – cgf

+0

相機捕獲問題? 'print cap.isOpened()'的結果是什麼?如果是False,則表示您的OpenCV無法初始化您的相機。您可能需要檢查您的安裝。 –

+0

是的,這確實是False。我可以採取任何直截了當的措施來解決這個問題嗎?在Google上找不到任何內容。 – cgf

12

至於OpenCL的失敗,請嘗試安裝所需的程序包:

sudo apt-get install ocl-icd-opencl-dev

爲我工作。我的猜測是OCL是opencv_core模塊的一部分,如果它未能初始化,那麼許多其他組件可能會表現得很奇怪。

+0

爲我工作,我認爲這是解決問題的正確方法。 –

+0

我現在意識到,抓取幀的失敗也會在OP中提到的類的'cvtColor()'處引發錯誤。 –

+0

@ a-Jays謝謝你節省我的時間... –