Emgu CV - 匹配模板时忽略颜色

时间:2016-07-07 11:05:09

标签: c# opencv image-processing pattern-matching emgucv

我在Emgu CV中使用Image类及其MatchTemplate方法来检测图片中的模式。所以,我的照片是黑白色(256灰色变体),我必须搜索白色模板,但我该如何存储它们?如果我只使用两种颜色的.png:白色代表图案,黑色代表背景 - 那么MatchTemplate方法会考虑模板的背景部分(并且会破坏结果)。我必须使用什么颜色作为图案背景?

UPD:已添加图片。

图案(仅需白色三角形):

Pattern

图片示例(一个简单的例子):

Image

检测(白色方块是我得到的,红色方块 - 我需要的): Detection

2 个答案:

答案 0 :(得分:0)

请阅读: http://docs.opencv.org/2.4/modules/imgproc/doc/object_detection.html?highlight=matchtemplate#matchtemplate

你显然不知道matchTemplate的工作原理。

您不能简单地为要忽略的背景选择一种颜色。该算法总是计算模板和某些图像区域之间的一些差异度量。除非图像和模板背景相同,否则您将始终产生影响。

如果你想“忽略”背景,你必须为每次迭代用图像区域替换背景,这样每个像素的背景差异变为0或至少相同。这听起来效率不高。

提供输入图像和模板示例。最有可能解决您的问题。

答案 1 :(得分:0)

您可能应该通过删除四个黑色侧面(仅留下白色三角形和黑色三角形)来修改模板图像。那应该可以帮助您获得理想的结果。