使用OpenCL在GPU上运行时,OpenCV会出现Assertion失败错误

时间:2016-12-07 11:50:57

标签: c++ opencv opencl

我有 ocl::OclCascadeClassifier::detectMultiScale() &我正在尝试在使用OpenCL在GPU上运行的c ++中运行面部检测算法。

发生此错误的函数是:

OpenCV Error: Assertion failed (localThreads[0] * localThreads[1] * localThreads[2] <= kernelWorkGroupSize) in cv::ocl::openCLVerifyKernel

我得到的错误是:

<form action='index.php?page=search&filter=1'>
<input type='text' name='ID'>
<input type='text' name='number'>
<input type='submit'>
</form>

我知道这个问题与设备的GPU有关,但我不知道如何解决这个问题。我尝试过使用OpenCV版本2和3,但两者都给出了同样的问题。

1 个答案:

答案 0 :(得分:0)

问题在于它试图使用英特尔高清显卡GPU代替Nvidia GPU。我通过选择Nvidia GPU作为OpenCL设备来解决这个问题。

我使用的代码是:

cv::ocl::DevicesInfo devInfo;
int res = cv::ocl::getOpenCLDevices(devInfo);
if (res == 0)
{
    std::cerr << "There is no OPENCL Here !" << std::endl;
}
else
{
    for (unsigned int i = 0; i < devInfo.size(); ++i)
    {
        std::cout << "Device : " << devInfo[i]->deviceName << " is present" << std::endl;
    }
}
cv::ocl::setDevice(devInfo[1]);