opencv模板匹配 - >得到确切的位置?

时间:2011-11-09 08:42:57

标签: opencv computer-vision

我安装了opencv并在我的iphone上工作(非常感谢这个社区)。我正在做模板匹配。它确实在捕获的图像中找到了对象。但是,确切的位置似乎很难分辨。

请查看以下视频(18秒): http://www.youtube.com/watch?v=PQnXNZMqpsU

正如您在视频中看到的,它确实在图像中找到了模板。但是当我将摄像机移动一点距离时,找到的模板就位于该正方形的某个位置。这样就很难分辨出找到的物体的确切位置。

您看到的方块基本上是找到的模板的x,y位置加上实际模板图像的宽度,高度。

所以基本上我的问题是,有没有办法找到找到的模板图像的确切位置?因为目前它可以在该广场内的任何位置。没有真正说明确切位置的方法......?

2 个答案:

答案 0 :(得分:2)

您似乎对模板匹配算法不太满意:)

很快,有一些方法可以改进它,但我建议你尝试别的东西。如果您的图像总是像视频一样简单,您可以使用阈值处理,轮廓查找,斑点检测等。它们简单快速。

对于要求更高的环境,您可以尝试功能匹配。寻找SIFT,SURF,ORB或其他方式来描述具有特征的对象。实际上,ORB专门针对手机的有限功率而设计得足够快。

在OCV samples / cpp /文件夹中试用此示例 matching_to_many_images.cpp

并查看有关如何使用特征检测器的详细答案; Detecting if an object from one image is in another image with OpenCV

答案 1 :(得分:1)

模板匹配(cvMatchTemplate())对于缩放和旋转不是不变的。当您将手机移回时,图像会显得较小,而模板会匹配"只是比赛得分最高的地方,虽然这不是真正的比赛 如果您想要缩放和/或旋转不变性,则必须尝试非模板匹配方法,例如使用2D-feature descriptors的方法。
查看OpenCV samples for examples如何执行此操作。