iphone opencv - 模板匹配

Posted

技术标签:

【中文标题】iphone opencv - 模板匹配【英文标题】:iphone opencv - template matching 【发布时间】:2011-11-08 10:33:57 【问题描述】:

我已经在我的 iphone 项目中实现了这个 OpenCV 构建:

http://aptogo.co.uk/2011/09/opencv-framework-for-ios/

它构建成功,我知道如何用我的相机捕捉图像,对其进行灰度化并在图像视图上显示。

但我想做的是将我(用相机)捕获的图像与模板图像进行模板匹配。

我将两张图像都进行了灰度化处理,但我只是不明白“matchTemplate”是如何工作的。这是我到目前为止所拥有的:

cv::Mat grayFrame, grayImg, output;

// This is the template image which i store in a cv::Mat and
// after that i grayscale the image
UIImage *testImage = [UIImage imageNamed:@"qr.png"];
cv::Mat tempMat = [testImage CVMat];
cv::cvtColor(tempMat, grayImg, cv::COLOR_RGB2GRAY);


// Convert captured frame to grayscale
cv::cvtColor(_lastFrame, grayFrame, cv::COLOR_RGB2GRAY);

// Having trouble here...
cv::matchTemplate(grayFrame, grayImg, output, CV_TM_CCORR_NORMED);


// Display result
// This already works for both the captured image and the template image
camView.image = [UIImage imageWithCVMat:grayFrame];

这段代码的问题是,是这一行吗:

cv::matchTemplate(grayFrame, grayImg, output, 1);

我不确定我是否做得对。因为我没有像“MinMax”那样在“输出”中得到结果来获取找到的匹配的位置......我什至将正确的变量传递给 matchTemplate 函数......??

无论如何,有人可以告诉我我做错了什么以及如何解决这个问题吗?

编辑- 添加了我的变量“输出”的屏幕截图

感谢您的帮助!

【问题讨论】:

【参考方案1】:

matchTemplate() 函数返回一个矩阵,其值表示在原始图像的每个像素上匹配的概率。它包含浮点数据并具有相同的大小(与输入的宽度/高度)。要提取最可能匹配的位置,您必须对结果运行 minMaxLoc() 函数。

【讨论】:

谢谢,我刚刚通过阅读本主题了解了该方法:tech.groups.yahoo.com/group/OpenCV/message/77992 -- 但我仍然不明白这是如何给我位置的,因为它只给了我 minValue 和maxValue -> minMaxLoc(输出, &minVal, &maxVal);知道如何找回吗?? void minMaxLoc(InputArray src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, InputArray mask=noArray())。它返回值和位置。发送对两个点的引用,它会将它们设置为所需的值。 我认为我的构建不正确,因为我没有可以通过 minLoc/maxLoc 点的方法。 i39.tinypic.com/4lniok.png -- 你在 iOS 上使用什么库? 别着急,有一些重载的方法,只要用上面介绍的参数调用,它就会找到好的。 你是对的。它确实指向了您所说的重载方法。所以我会把你的答案标记为正确的,因为它是正确的。但我确实希望你能帮我解决最后一件事。因为我传递了一个 Point 结构,但它给了我一个错误,因为: - 没有已知的从 Point *(又名 Point *)到 Point *(又名 Point_ *)的转换——我试着像这样创建它: -- Point[] res1; -- 和 -- 点 *res1; -- 和 -- 点 res1; --..但一切都失败了。知道我做错了什么..??无论如何感谢您的帮助!

以上是关于iphone opencv - 模板匹配的主要内容,如果未能解决你的问题,请参考以下文章

opencv 中自带的模板匹配算法出处

opencv 中自带的模板匹配算法出处

使用Python,OpenCV进行模板匹配单对象多对象及多尺度模板匹配

OpenCV模板匹配 - 如何确定匹配模板的角度

使用OpenCV进行模板匹配(原图-模板图)

opencv 模板匹配,在图像中寻找物体