通过OpenCV 2查找所有比赛

时间:2017-03-13 06:18:46

标签: c++ opencv

我正在尝试使用matchTemplate功能在源图片中查找公司的徽标。所以我提到this

但我的问题是:

源图片可能包含与模板匹配的许多几乎相同的徽标,以及其他一些公司的徽标(无与伦比)。

如何找到所有匹配不仅是最佳匹配,就像在矢量中输出的detectMultiScale一样。

1 个答案:

答案 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,条件将使用相反的不等式符号。我会把实施留给你。祝你好运。