我正在尝试使用matchTemplate
功能在源图片中查找公司的徽标。所以我提到this。
但我的问题是:
源图片可能包含与模板匹配的许多几乎相同的徽标,以及其他一些公司的徽标(无与伦比)。
如何找到所有匹配不仅是最佳匹配,就像在矢量中输出的detectMultiScale一样。
答案 0 :(得分:2)
在while循环中运行模板匹配,作为条件,您询问是否找到匹配项(具有一定的确定性阈值)。在每个循环结束时保存匹配并屏蔽该区域,以便再次找不到它。当确定性下降到该水平之下时,从循环中突然出现。
伪代码:
while true:
maxLoc, maxVal = template_matching() # perform the matching
if(maxVal < threshold) # check if it is a good match and break if not
break
list.append(maxLoc) # save the location of a good match
mask_out(src, (maxLoc.x + template.cols , maxLoc.y + template.rows)) # mask out the area, so that it's not found again
draw_all_rectangles(list)
请记住,根据使用的模板匹配方法,您将使用minVal和minLoc或maxVal和maxLoc。使用minVal,条件将使用相反的不等式符号。我会把实施留给你。祝你好运。