Python联合OpenCV进行模板匹配(单模板)

Python联合OpenCV进行模板匹配(单模板)

可通过ROI区域选择来裁剪出模板直接进行匹配(此部分:ROI裁剪)

import cv2
import numpy as np

#使用opencv进行模板匹配(单)
#读取图片
image = cv2.imread("F:\\Python\\Image\\720.jpg")
#读取模板图像,或者通过ROI区域进行匹配
image_mod = cv2.imread("F:\\Python\\Image\\mod.jpg")

theight,twidth = image_mod.shape[:2]
#执行模板匹配,采用的匹配方式cv2.TM_SQDIFF_NORMED
result = cv2.matchTemplate(image,image_mod,cv2.TM_SQDIFF_NORMED)
#归一化处理
cv2.normalize(result,result,0,1,cv2.NORM_MINMAX,-1)
#寻找矩阵 (一维数组当做向量,用Mat定义)中的最大值和最小值的匹配结果及其位置
min_val,max_val ,min_loc,max_loc = cv2.minMaxLoc(result)
#匹配值转换为字符串
#对于cv2.TM_SQDIFF及cv2.TM_SQDIFF_NORMED方法min_val越趋近与0匹配度越好,匹配位置取min_loc
#对于其他方法max_val越趋近于1匹配度越好,匹配位置取max_loc
strmin_val = str(min_val)
#绘制矩形边框,将匹配区域标注出来
#min_loc:矩形定点
#(min_loc[0]+twidth,min_loc[1]+theight):矩形的宽高
#(0,0,225):矩形的边框颜色;2:矩形边框宽度
cv2.rectangle(image,min_loc,(min_loc[0]+twidth,min_loc[1]+theight),(20,20,225),3)
#显示结果,并将匹配值显示在标题栏上
cv2.imshow("MatchResult----MatchingValue="+strmin_val,image)
cv2.waitKey()
cv2.destroyAllWindows()


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简Python/OpenCV 程序,用于从图像中测量尺寸。 ```python import cv2 # 读取原始图像 img = cv2.imread('image.jpg') # 转换为灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 读取模板图像 template = cv2.imread('template.jpg', 0) # 获取模板图像的宽度和高度 w, h = template.shape[::-1] # 进行模板匹配 res = cv2.matchTemplate(gray, template, cv2.TM_CCOEFF_NORMED) threshold = 0.8 loc = np.where(res >= threshold) # 绘制矩形框 for pt in zip(*loc[::-1]): cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2) # 显示结果图像 cv2.imshow('result', img) cv2.waitKey(0) cv2.destroyAllWindows() # 计算测量尺寸 pixels_per_metric = float(input('输入每个像素的实际尺寸:')) distance_pixels = loc[1][1] - loc[0][1] distance_metric = distance_pixels / pixels_per_metric print('测量尺寸:{}像素,{}实际尺寸'.format(distance_pixels, distance_metric)) ``` 这个程序首先从文件中读取原始图像和模板图像,并将原始图像转换为灰度图像。然后,它使用 OpenCV 的 `matchTemplate` 函数进行模板匹配。匹配结果存储在 `res` 中,它是一个浮点数数组。然后,程序使用 `np.where` 函数查找匹配结果大于或等于阈值的像素位置。这些像素位置被用于绘制矩形框,以突出显示匹配的区域。最后,程序计算测量尺寸,并将结果显示在屏幕上。 请注意,这个程序假设每个像素的实际尺寸已知,并且用户必须手动输入该值。如果您想自动计算每个像素的实际尺寸,则需要使用摄像机标定技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值