2016-12-07 5 views
0

У меня есть Nvidia GTX 970M GPU & Я пытаюсь запустить алгоритм обнаружения лиц в C++, который работает на GPU с использованием OpenCL.OpenCV дает ошибку с подтверждением при запуске на GPU с использованием OpenCL

Функция, где происходит эта ошибка:

ocl::OclCascadeClassifier::detectMultiScale() 

Ошибки я получаю:

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

Я знаю, что эта проблема связана с GPU устройства, но я не знаю, как это исправить. Я пробовал использовать OpenCV версии 2 и 3, но обе дают ту же проблему.

ответ

0

Проблема заключалась в том, что она пыталась использовать графический процессор Intel HD Graphics вместо графического процессора Nvidia. Я решил это, выбирая графический процессор Nvidia как устройство 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]);