实施OpenCV进行图像标记检测

时间:2018-07-10 23:58:00

标签: swift opencv image-recognition

我已经使用OpenCV框架设置了一个应用程序,以使用相机检测图像标记,然后在屏幕上的图像与标记匹配时做出反应。 到目前为止,我已经掌握了以下方法:

https://medium.com/@dwayneforde/image-recognition-on-ios-with-swift-and-opencv-b5cf0667b79

并且还使用了他的代码来实现图像匹配功能。一切都已设置好,我应该可以开始了……但是……当尝试运行应用程序时,该应用程序崩溃了。

问题出在我检查比赛的地方。我按照本教程中的说明使用此代码:

- (void)processImage:(cv::Mat &)img {
cv::Mat gimg;

// Convert incoming img to greyscale to match template
cv::cvtColor(img, gimg, CV_BGR2GRAY);

// Use check for matches with a certain threshold to help with scaling and angles
cv::Mat res(img.rows-gtpl.rows+1, gtpl.cols-gtpl.cols+1, CV_32FC1);
cv::matchTemplate(gimg, gtpl, res, CV_TM_CCOEFF_NORMED);
cv::threshold(res, res, 0.5, 1., CV_THRESH_TOZERO);

double minval, maxval, threshold = 0.9;
cv::Point minloc, maxloc;
cv::minMaxLoc(res, &minval, &maxval, &minloc, &maxloc);

// If it's a good enough match
if (maxval >= threshold)
{
    // Draw a rectangle for confirmation
    cv::rectangle(img, maxloc, cv::Point(maxloc.x + gtpl.cols, maxloc.y + gtpl.rows), CV_RGB(0,255,0), 2);
    cv::floodFill(res, maxloc, cv::Scalar(0), 0, cv::Scalar(.1), cv::Scalar(1.));

    // Call our delegates callback method
    [delegate matchedItem];
}

}

问题似乎出在线路上

  cv::matchTemplate(gimg, gtpl, res, CV_TM_CCOEFF_NORMED);

我得到这个错误消息:

  

OpenCV(3.4.1)错误:断言失败(crossr),文件/卷中的声明失败(corrsize.height <= img.rows + templ.rows-1 && corrsize.width <= img.cols + templ.cols-1) /build-storage/build/master_iOS-mac/opencv/modules/imgproc/src/templmatch.cpp,第589行

     

libc ++ abi.dylib:以cv :: Exception类型的未捕获异常终止:OpenCV(3.4.1)/ Volumes / build-storage / build / master_iOS-mac / opencv / modules / imgproc / src / templmatch。 cpp:589:错误:(-215)corrsize.height <= img.rows + templ.rows-1 && corrsize.width <= img.cols + templ.cols-函数crossCorr中的1

有人可以看到我在做什么吗?

0 个答案:

没有答案