遍历模板图像集合,与图像匹配,如果dist大于阈值h,则认为此模板在图像中存在,否则不存在,继续匹配下一个模板,直到遍历完所有模板。
以模板‘加’为例,图像大小为40x260,模板大小27x27,result是一个大小为(14,234)的矩阵,即上文提到的相似度矩阵,矩阵中的数值属于[-1,1],找到result中最大值所处的对应位置即为与模板最匹配的图像位置:x=66,y=11,正好对应模板图像在image中所处的位置。 (更多内容请参阅参考文献【4】)
但这是比较好的情况,因为在匹配时遍历了所有的模板,而一张图片中出现的模板数量是有限的,比如数字’四’在图片中是没有的,这时就要根据某种规则去掉这些在图片中没有出现的模板:程序中使用dist变量来过滤匹配结果,如果dist变量大于某个值则认为此模板在图像中不存在。
最后的result_list中可能仍然存在一些图片中不存在的模板或者匹配不精确的模板,比如数字‘一’在模板中不存在,但仍然可以匹配到,因为数字‘二’中可以匹配到‘一’,需要进一步优化,优化方法有很多,比如当匹配到的两个模板距离过近时,选择较大的那个模板,其余方法留给读者自行考虑吧。
后续将会推出如何使用深度学习识别验证码,敬请期待~