好用,易用,高效,稳定 基于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)

可视化匹配搜索框如下:

​​

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

数据可以如此美好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值