0
点赞
收藏
分享

微信扫一扫

好用,易用,高效,稳定 基于opencv 的 图像模板匹配 - python 实现

        在定位、搜索固定界面图块时,经常用到模板匹配,opencv自带的图像模板匹配好用,易用,高效,稳定,且有多种匹配计算方式。

具体示例如下:

模板图:

待搜索图:

具体实现代码如下:

#-*-coding:utf-8-*-
# date:2024-06
# Author: DataBall
# function: 图像模板匹配
import cv2
import os

def match_image_block(img_model,img):
    h,w = img_model.shape[:2]
    res_match = cv2.matchTemplate(img_model, img, cv2.TM_CCOEFF_NORMED) # 图像模板匹配
    gminval, gmaxval, gminloc, gmaxloc = cv2.minMaxLoc(res_match)
    score_ = gmaxval
    x,y = gmaxloc[0],gmaxloc[1]
    return score_,[x,y,x+w,y+h] # 返回模板匹配分数 和 搜索坐标框

if __name__ == "__main__":
    img_model = cv2.imread("image/model.png") # 模板图
    img = cv2.imread("image/img.png") # 待搜索图
    score_,(x1,y1,x2,y2) = match_image_block(img_model,img)
    print("score:{:.2f},(x1,y1,x2,y2):{}".format(score_,(x1,y1,x2,y2))) # 打印模板匹配分数 和 搜索坐标框

    # 模板搜索结果可视化图片显示
    cv2.rectangle(img, (x1,y1), (x2,y2), (255, 0, 155), 6)
    cv2.rectangle(img, (x1,y1), (x2,y2), (0, 255, 0), 2)

    cv2.namedWindow("img_model",0)
    cv2.imshow("img_model",img_model)
    cv2.imshow("image",img)
    cv2.waitKey(0)

脚本执行log如下:

score:0.84,(x1,y1,x2,y2):(810, 101, 869, 164)

可视化匹配搜索框如下:

​​

助力快速掌握数据集的信息和使用方式。

数据可以如此美好!

举报

相关推荐

0 条评论