2016-12-07 1 views
0

Ich habe eine Nvidia GTX 970M GPU & Ich versuche, einen Gesichtserkennungsalgorithmus in C++ auszuführen, die auf der GPU mit OpenCL ausgeführt wird.OpenCV gibt Assertion fehlgeschlagen Fehler beim Ausführen auf GPU mit OpenCL

Die Funktion, wo dieser Fehler auftritt:

ocl::OclCascadeClassifier::detectMultiScale() 

Der Fehler, den ich bekommen ist:

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

Ich weiß, dass dieses Problem auf die GPU der Vorrichtung verbunden ist, aber ich weiß nicht, wie man das beheben kann. Ich habe versucht, OpenCV Versionen 2 und 3 zu verwenden, aber beide geben das gleiche Problem.

Antwort

0

Das Problem war, dass es versuchte, die Intel HD Graphics GPU anstelle der Nvidia GPU zu verwenden. Ich habe das gelöst, indem ich die Nvidia-GPU als OpenCL-Gerät gewählt habe.

Der Code, den ich verwendet wurde:

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]); 
Verwandte Themen