我尝试运行OpenCL基本面部检测器代码,该代码位于“samples / ocl / facedetect.cpp”中。在编译面检测代码之前,我按照以下步骤编译OpenCV并启用OpenCL。
我从 Intel SDK for OpenCL Applications 2013 下载了英特尔的OpenCL SDK并安装了它。
使用CMake,我启用了“WITH_OPENCL”并成功构建了OpenCV。 “libopencv_ocl245.dll”已创建。
我尝试编译人脸检测代码并成功编译。但是int devnums = cv::ocl::getDevice(oclinfo, ocl::CVCL_DEVICE_TYPE_DEFAULT);
总是返回“0”。
我更改了以下标志,我收到以下错误:
标志:
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) ....
运行OpenCL人脸检测代码是否有任何硬件依赖性?我在Intel CPU上运行代码。
运行OpenCL人脸检测示例代码需要哪些规范?
上述步骤中的任何地方都错了吗?
仅安装OpenCL SDK吗?或者我是否需要安装其他东西?
答案 0 :(得分:1)
您可能使用OpenCL 1.1而不是1.2。或者可能是仅与OpenCL 1.1兼容的Intel CPU。 OpenCV需要运行OpenCL 1.2文件和OpenCL 1.2兼容设备。
根据您使用英特尔CPU的事实判断,我可能会错误地回答这个问题,因为大多数英特尔CPU都与OpenCL 1.2兼容,但值得一看。另一种可能性是您的默认OpenCL设备是您的GPU,如果它来自Nvidia,则可能与OpenCL 1.2不兼容。