网站首页 > 技术文章 正文
0、参考
(1)不错:https://blog.csdn.net/cyy1104/article/details/130314183
1、概念
模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术。模板匹配不是基于直方图的,而是通过在输入图像上滑动图像块(模板)同时对比相似度,来对模板和输入图像进行匹配的一种方法。主要应用场合:
- (1)目标查找定位
- (2)运动物体跟踪
2matchTemplate函数
2.1函数定义
(1)函数定义如下
cv.matchTemplate( image, templ, method[, result[, mask]] ) -> result
(2)官方定义如下https://docs.opencv.org/
(3)参数说明
- image:待搜索图像(大图)
- templ:搜索模板,需和原图一样数据类型且尺寸大小不能大于源图像
- reuslt:比较结果的映射图像,其必须为单通道的,32位浮点型图像。如果原图(待搜索图像)尺寸为W*H,而templ的尺寸为w*h,则result的尺寸一定是(W-w+1)*(H-h+1)。
2.2匹配方法
上述函数中(method)的匹配方法有有如下六种:
- 1 TM_SQDIFF --- 平方差匹配法(最好匹配0)
- 2 TM_SQDIFF_NORMED --- 归一化平方差匹配法(最好匹配0)
- 3 TM_CCORR --- 相关匹配法(最坏匹配0)
- 4 TM_CCORR_NORMED ---归一化相关匹配法(最坏匹配0)
- 5 TM_CCOEFF --- 系数匹配法(最好匹配1)
- 6 TM_CCOEFF_NORMED --- 归一化系数匹配法(最好匹配1)
官方的定义如下
https://docs.opencv.org/4.8.0/df/dfb/group__imgproc__object.html#ga3a7850640f1fe1f58fe91a2d7583695d
2.2.1 TM_SQDIFF
平方差匹配 method=TM_SQDIFF:最好匹配为0,匹配越差,匹配值越大。python写法为:cv.TM_SQDIFF
2.2.2 TM_SQDIFF_NORMED
标准平方差匹配 method=TM_SQDIFF_NORMED。Python写法为: cv.TM_SQDIFF_NORMED
2.2.3 TM_CCORR
相关匹配 method=TM_CCORR。Python写法为: cv.TM_CCORR
2.2.4 TM_CCORR_NORMED
标准相关匹配 method=TM_CCORR_NORMED。Python写法为: cv.TM_CCORR_NORMED
2.2.5 TM_CCOEFF
系数匹配 method=TM_CCOEFF。Python写法为: cv.TM_CCOEFF
2.2.6 TM_CCOEFF_NORMED
归一化系数匹配method=TM_CCOEFF_NORMED。Python写法为: cv.TM_CCOEFF_NORMED
3.normalize函数
3.1作用
该函数的作用是进行矩阵归一化。
3.2函数说明
(1)函数
cv.normalize( src, dst[, alpha[, beta[, norm_type[, dtype[, mask]]]]] ) -> dst
(2)官方说明https://opencv.org/
(3)参数说明
- src:输入源图像,Mat类型
- dst:输出结果图像,需要和原图一样的尺寸和类型
- alpha:归一化后的最小值,默认为1
- beta:归一化后的最大值,默认为0
- norm_type:归一化类型,可选:NORM_INF, NORM_L1, NORM_L2(默认)等
- dtype:默认值为-1,此参数为负值时,输出矩阵和src有同样的类型
- mask:可选的掩码操作
4.minMaxLoc()函数
4.1作用
minMaxLoc()函数的作用是在数组中找到全局最小值和最大值
4.2函数说明
(1)定义
cv.minMaxLoc( src[, mask] ) -> minVal, maxVal, minLoc, maxLoc
(2)官方定义
(3)参数说明
- src:输入源图像,单通道图像
- minVal:返回最小值的指针,若无需返回,则置为0
- maxVal:返回最大值的指针,若无需返回,则置为0
- minLoc:返回最小位置的指针,若无需返回,则置为0
- maxLoc:返回最大位置的指针,若无需返回,则置为0
- mask:可选的掩码操作
5.模版匹配的测试代码
(1)测试代码
import cv2
import numpy as np
if __name__ == '__main__':
# 读取图像和模板
img = cv2.imread('Src2.jpg',0)
template = cv2.imread('template2.jpg',0)
# template = cv2.imread('template1_2.jpg',0)
# template = cv2.imread('template1.jpg',0)
w, h = template.shape[::-1]
# 模板匹配
result = cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED)
#归一化 到0-1范围
result = cv2.normalize(result, None, 0, 1.0, cv2.NORM_MINMAX, dtype=cv2.CV_32F)
# 找到最佳匹配
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
# 在原图中绘制矩形框
cv2.rectangle(img,top_left, bottom_right, 255, 2)
# 显示结果
cv2.imshow('Matched image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
(2)测试结果
猜你喜欢
- 2024-09-27 Linux 理解K8S Deployment配置的详细解释输出
- 2024-09-27 XSLT 元素 x元素是啥
- 2024-09-27 「airTest」 airTest入门与原理 airtest assert
- 2024-09-27 用人脸识别抓取王思聪吃热狗——真香
- 2024-09-27 必学组合函数INDEX和MATCH,真的比VLOOKUP函数好用?分情况,未必
- 2024-09-27 python模拟哔哩哔哩滑块登入验证的实现
- 2024-09-27 opencv多目标匹配 opencv多目标识别
- 2024-09-27 Python OpenCV 的知识体系梳理 opencv-python-tutorial
- 2024-09-27 「技术分享」截图录屏-截长图的实现原理
- 2024-09-27 视觉信息辅助激光导航AGV的应用 智能agv的激光导航包含
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)