我尝试运行“samples / ocl / facedetect.cpp”中的OpenCL基本面部检测器代码。在编译人脸检测代码之前,我遵循以下步骤在启用OpenCL的情况下编译OpenCV。

  • 我从Intel SDK for OpenCL Applications 2013下载了Intel的OpenCL SDK,并进行了安装。
  • 使用CMake,我启用了“WITH_OPENCL”并成功构建了OpenCV。已创建“libopencv_ocl245.dll”。

  • 我尝试编译人脸检测代码,并成功编译。但是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面部检测代码是否存在任何硬件依赖性?我在Intel CPU上运行代码。
  • 运行OpenCL面部检测示例代码所需的规范是什么?
  • 我在上述步骤中的任何地方错了吗?
  • 仅安装OpenCL SDK就足够了吗?还是我需要安装其他东西?
  • 最佳答案

    您可能正在使用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/

    10-12 22:52
    查看更多