0

我試着運行「samples/ocl/facedetect.cpp」中的OpenCL基本人臉檢測器代碼。在編譯面部檢測代碼之前,我按照以下步驟在啓用OpenCL的情況下編譯OpenCV。如何運行基本的OpenCL人臉檢測代碼

  1. 我從Intel SDK for OpenCL Applications 2013下載的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足夠?或者我需要安裝其他東西?

回答

1

您可能使用OpenCL 1.1而不是1.2。或者也許是隻與OpenCL 1.1兼容的英特爾CPU。 OpenCV需要運行OpenCL 1.2文件和OpenCL 1.2兼容設備。

根據您使用英特爾CPU的事實判斷,由於大多數英特爾CPU都與OpenCL 1.2兼容,因此可能會出現此問題,但值得一看。另一種可能性是您的默認OpenCL設備是您的GPU,如果它來自Nvidia,則可能與OpenCL 1.2不兼容。