2016-03-08 145 views
0

我在项目中使用模板匹配查找较大图像中的subimage的所有位置。我正在使用OpenCV方法templateMatch()floodFill()(以Java)完成此操作,并且它正常工作,但仅适用于包含subimage的较大图像。防止不正确的模板匹配OpenCV

Imgproc.matchTemplate(image, subimage, result, Imgproc.TM_CCOEFF); 

如果较大的图像不包含它,我返回一个巨大的不正确的位置列表。我想要所有的位置(如果子图像存在于较大的图像中),但如果不存在,则为无。我应该如何去做这件事?如果模板匹配不是正确的方法,那么我该怎么做呢?

顺便说一下我的代码的结构是这样Java opencv template matching and floodfill behavior.

所有帮助深表感谢!

回答

0

有办法可以试试,我知道你提到的问题,无论如何,我找到了一个解决方案,你可以对结果图像进行阈值操作,例如找到任何匹配时的模板匹配图像的一个sumimage,那么位置将显示为白色,当它发现很好的匹配时,颜色可以更白,所以你可以阈值图像提取良好的发现位置,然后可以找到轮廓或一些其他操作获得轮廓位置。希望它能帮助你!