我尝试运行“samples / ocl / facedetect.cpp”中的OpenCL基本面部检测器代码。在编译人脸检测代码之前,我遵循以下步骤在启用OpenCL的情况下编译OpenCV。
我尝试编译人脸检测代码,并成功编译。但是
int devnums = cv::ocl::getDevice(oclinfo, ocl::CVCL_DEVICE_TYPE_DEFAULT);
始终返回“0”。我更改了以下标志,但出现以下错误:
旗:
错误:
> 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) ....
最佳答案
您可能正在使用OpenCL 1.1而不是1.2。或者也许是仅与OpenCL 1.1兼容的Intel CPU。 OpenCV需要OpenCL 1.2文件和与OpenCL 1.2兼容的设备才能运行。
从您使用Intel CPU的事实来判断,由于大多数Intel CPU都将与OpenCL 1.2兼容,因此我在此答案上可能会出错,但是值得一看。另一种可能是您的默认OpenCL设备是您的GPU,如果它来自Nvidia,则可能与OpenCL 1.2不兼容。
关于opencv - 如何运行基本的OpenCL人脸检测代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17475003/