Q:

Failed to load OpenCL runtime in OpenCV for Python

I am trying to run the first example here, but I am getting this error. I am using Ubuntu 13.10.  
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

Also, this is the line that is causing the trouble (line 11 in my code):
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

What should I do?

A:

As for the OpenCL failure, try installing required packages:
sudo apt-get install ocl-icd-opencl-dev
Worked for me. My guess is that OCL is a part of the opencv_core module, and if it failed to initialise, then many other components might behave strange.

A:

Failed to load OpenCL runtime

Most probably there is some problem with your installation. If you are not working with GPU, then I recommend you to turn off all CUDA/OpenCL modules in OpenCV during compilation.

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

This error says your input image should have 3 channel (BGR/color image) or 4 channel(RGBA image). So please check number of channels in frame by executing print frame.shape. 
Since you are working with video, there is a high chance that your camera is not opened for capture, so that frame is not captured. In that case, print frame.shape will say it is NoneType data. 
I recommend you to run the same code with an image instead of video. Even then if the error of OpenCL shows up, it is most likely a problem with your installation. If it works fine, problem may be with VideoCapture. You can check it as mentioned in the same tutorial:

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.

