2016-12-07 41 views
0

我有一个Nvidia GTX 970M GPU &我想在使用OpenCL的GPU上运行的C++中运行人脸检测算法。OpenCV在使用OpenCL在GPU上运行时给出断言失败错误

哪里出现此错误的功能是:

ocl::OclCascadeClassifier::detectMultiScale() 

我得到的错误是:

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

我知道这个问题是关系到设备的GPU,但我不知道如何解决这个问题。我曾尝试使用OpenCV版本2和3,但都出现同样的问题。

回答

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]); 
相关问题