0

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

  1. 我从Intel SDK for OpenCL Applications 2013下载了 Intel 的 OpenCL SDK并安装了它。

  2. 使用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)  ....
  1. 运行 OpenCL 人脸检测代码是否有任何硬件依赖性?我在英特尔 CPU 上运行代码。

  2. 运行 OpenCL 人脸检测示例代码需要哪些规范?

  3. 我在上述步骤中的任何地方都错了吗?

  4. 只安装 OpenCL SDK 就够了吗?还是我需要安装其他东西?

4

1 回答 1

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 不兼容。

于 2013-07-10T16:18:45.693 回答