我在带有Integrated Graphics 4000和OpenCL 1.1的Intel i5上运行OpenCV 3.0 OpenCL。
在其自己的线程中使用matchTemplate函数和UMat时,线程会挂起并且不会执行任何其他代码行。当它挂起时,它不会抛出任何错误或异常或任何东西,跟踪器线程只返回并且Main继续运行。
我的线程使用matchTemplate可以正常使用Mat容器,我的探测器线程可以很好地与UMat配合使用,所以我认为它与matchTemplate函数本身和UMat有关。有没有人对此有任何想法?
void Detector::trackOCL(UMat imgLast, UMat img){ //tracker function
Rect track = Rect(0,0,0,0);
UMat result_mat;
if(!imgLast.empty()){
if(!img.empty()){
matchTemplate(imgLast, img, result_mat, CV_TM_CCORR_NORMED); //hangs here
cout << "Test statement" << endl; //doesn't reach here
}
}
//rest of code to process result_mat