大佬教程收集整理的这篇文章主要介绍了使用 OpenCV 模板匹配 matchTemplate() 在模板中找到最佳匹配,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一组 Pokemon 精灵 (examplE) 和一个图像,其中显示了其中一个精灵。
an image contains a sprite
我打算用 res = cv2.matchTemplate
在精灵中找到最佳匹配结果,以便可以获得该 Pokemon 的名称。
for t in templates:
res = cv2.matchTemplate(img,t,cv2.TM_CCOEFF_norMED)
min_val,max_val,min_loc,max_loc = cv2.minMaxLoc(res)
但是,我不知道如何使用 res
选择最佳结果。如何使用 res
作为衡量匹配的指标?谢谢!
此处的教程介绍了如何使用 @H_243_3@matchTemplate 函数的输出来选择最佳匹配: https://docs.opencv.org/3.4/de/da9/tutorial_template_matching.html
看起来好像您可能只是错过了 normalize 调用,它将所有结果缩放到一个设定范围。在本教程的示例中,此范围是 0 - 1。
就您而言,以下应该是您需要的:
cv2.normalize( res,res,1,cv2.NORM_MINMAX,-1 )
min_val,max_val,min_loc,max_loc = cv2.minMaxLoc(res)
if (match_method == cv2.TM_SQDIFF or match_method == cv2.TM_SQDIFF_NORMED):
match_loc = min_loc
else:
match_loc = max_loc
根据所使用的模板匹配方法,@H_243_3@match_loc 为您提供最佳匹配的位置。
编辑:如果有一个阈值,例如,您决定上方/下方的“最佳”匹配(取决于所使用的方法)0.5
被认为根本不是匹配,那么您将实现逻辑以表示未找到匹配项。
以上是大佬教程为你收集整理的使用 OpenCV 模板匹配 matchTemplate() 在模板中找到最佳匹配全部内容,希望文章能够帮你解决使用 OpenCV 模板匹配 matchTemplate() 在模板中找到最佳匹配所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。