2014-02-16 7 views
3

Я пытаюсь запустить первый пример here, но я получаю эту ошибку. Я использую Ubuntu 13.10.Не удалось загрузить OpenCL runtime в OpenCV для Python

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, я рекомендую вам отключить все модули CUDA/OpenCL в OpenCV во время компиляции.

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

Эта ошибка говорит ваш входное изображение должно быть 3 канала (BGR/цветного изображения) или 4 канала (RGBA изображения). Поэтому, пожалуйста, проверьте количество каналов в frame, выполнив print frame.shape.

Поскольку вы работаете с видео, существует высокая вероятность того, что ваша камера не будет открыта для захвата, чтобы кадр не был захвачен. В этом случае 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

Да, это действительно ложно. Есть ли какие-либо простые шаги, которые я могу предпринять, чтобы исправить это? Невозможно найти что-либо в Google. – cgf

12

Что касается отказа OpenCL, попробуйте установить необходимые пакеты:

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

работал для меня. Я предполагаю, что OCL является частью модуля opencv_core, и если ему не удалось инициализировать, то многие другие компоненты могут вести себя странно.

+0

Работал для меня, я думаю, что это правильный способ решить проблему. –

+0

Теперь я понимаю, что неспособность захватить фрейм также выдала бы ошибку в 'cvtColor()' типа, упомянутого в OP. –

+0

@ a-Jays Спасибо, что сэкономили мое время ... –

Смежные вопросы