How to run basic OpenCL face detection code


I tried running the OpenCL basic face detector code which is in "samples/ocl/facedetect.cpp". Before compiling the face detect code I followed the below steps to compile OpenCV with OpenCL enabled.

  1. I downloaded OpenCL SDK by Intel from Intel SDK for OpenCL Applications 2013 and installed it.

  2. Using CMake, I enabled "WITH_OPENCL" and built OpenCV successfully. The "libopencv_ocl245.dll" got created.

I tried compiling the face detection code and it compiled successfully. But int devnums = cv::ocl::getDevice(oclinfo, ocl::CVCL_DEVICE_TYPE_DEFAULT); always returns "0".

I changed the following flag, and I got the below error:


int devnums = cv::ocl::getDevice(oclinfo, ocl::CVCL_DEVICE_TYPE_DEFAULT);


>     0x06670A02 (0x08730080 0x00000000 0x00000018 0x0A3121D8)0x06670A02 (0x08F70080 0x00000000 0x00000024 0x0A0DC008)0x06670A02 (0x097B0080
> 0x00000000 0x00000000 0x0028E48C) <unknownmodule>
>                                                                                                                                                                                               <unknown module>
>                                                                                                                                                                                                               0x630E6900 (0x0A3121C8 0x00000000 0x00000000 0x00000018)0x630E6900
> (0x0A0DBFF8 0x00000000 0x00000000 0x00000024) <unknown module>
>                                                                                                                   0x630E6900 (0x0028E47C 0x00000000 0x00000000 0x00000000),
> opencl_mic_printf() + 0x12130 bytes(s), opencl_mic_printf() + 0x12130
> bytes(s), opencl_mic_printf() + 0x12130 bytes(s)  ....
  1. Is there any hardware dependency for running OpenCL face detection code? I am running the code on an Intel CPU.

  2. What are the specifications needed to run the OpenCL face detection sample code?

  3. Am I wrong anywhere in the above steps?

  4. Is only installing the OpenCL SDK enough? Or do I need to install something else?

asked on Stack Overflow Jul 4, 2013 by 2vision2 • edited Jan 5, 2014 by Peter Mortensen

1 Answer


You are possibly using OpenCL 1.1 instead of 1.2. Or perhaps an Intel CPU that is only compatible with OpenCL 1.1. OpenCV needs the OpenCL 1.2 files and an OpenCL 1.2 compatible device to run.

Judging by the fact that your using an Intel CPU, I'm probably going to be wrong on this answer since most Intel CPUs would be compatible with OpenCL 1.2, but it's worth a look. Another possibility is that your default OpenCL device is your GPU, which if it's from Nvidia, probably isn't compatible with OpenCL 1.2.

answered on Stack Overflow Jul 10, 2013 by Msquared • edited Jan 5, 2014 by Peter Mortensen

User contributions licensed under CC BY-SA 3.0