程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 OpenCV 模板匹配 matchTemplate() 在模板中找到最佳匹配大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 OpenCV 模板匹配 matchTemplate() 在模板中找到最佳匹配?

开发过程中遇到使用 OpenCV 模板匹配 matchTemplate() 在模板中找到最佳匹配的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 OpenCV 模板匹配 matchTemplate() 在模板中找到最佳匹配的解决方法建议,希望对你解决使用 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,请注明来意。
标签:使用