【传统视觉】模板匹配和卡尺圆检测

模板匹配 粗定位

1、原理:模板匹配是指在当前图像A中匹配与图像B最相似的部分,那么A为输入图像,B为模板图像。

2、匹配方法:B在A上华东,逐个遍历所有像素完成匹配。

3、函数:

复制代码
result = cv2.matchTemplate(image, templ, method[,mask]);
返回值:一个结果集。类型是单通道32位浮点型

其中image为图像A,templ为模板(图像B),method为匹配方法;
method = 0-5 总共六种方法
参数值 对应数值 解释
cv2.TM_SQDIFF 0 以方差为依据,进行匹配,result值为0表示匹配度最好,值越大,表示匹配度越差
cv2.TM_SQDIFF_NORMED 1 标准(归一化)平方差匹配
cv2.TM_CCORR 2 A与B的像素点相乘,较大则匹配度较高,result的值越小表示匹配度越差,值越大表示匹配度越好
cv2.TM_CCORR_NORMED 3 2的归一化
cv2.TM_CCOEFF 4 模板图像B与A均值的相关性匹配,1表示完美匹配,-1表示垃圾匹配,0表示没得关系
cv2.TM_CCOEFF_NORMED 5 4的归一化

4、配合查找最值方式来找到匹配的位置

复制代码
minVal,maxVal,minLoc,maxLoc=cv2.minMaxLoc(src[,mask])
src:为单通道数组。
minVal:为返回的最小值,如果没有最小值,则可以是NULL(空值)。
maxVal:为返回的最大值,如果没有最小值,则可以是NULL。
minLoc:为最小值的位置,如果没有最大值,则可以是NULL。
maxLoc:为最大值的位置,如果没有最大值,则可以是NULL。
mask:为用来选取掩模的子集,可选项

示例:

复制代码
rv = cv2.matchTemplate(img, template, cv2.TM_SQDIFF)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(rv)

卡尺找圆 精细定位

卡尺的原理:

是找N个小矩形ROI里面的灰度值突变的地方。即:遍历每个小矩形ROI,分别找到1个点,这个点是灰度突变的峰值。然后把这N个点拟合成直线或者圆。

相关推荐
金銀銅鐵5 小时前
[Python] 基于欧几里得算法,实现分数约分计算器
python·数学
Lyn_Li7 小时前
Kaggle Top 5 | 198只股票、200条数据的金融预测——BattleFin高分方案从零复现
python·kaggle·比赛复盘·金融预测
小九九的爸爸11 小时前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
阿耶同学12 小时前
手把手教你用 LangGraph 搭建三层嵌套 Agent 架构
python·程序员
花酒锄作田1 天前
Pydantic校验配置文件
python
hboot1 天前
AI工程师第四课 - 深度学习入门
pytorch·python·神经网络
ZhengEnCi2 天前
P2M-Matplotlib折线图完全指南-从数据可视化到趋势分析的Python绘图利器
python·matlab·数据可视化
ZhengEnCi2 天前
P2L-Matplotlib饼图完全指南-从数据可视化到图表定制的Python绘图利器
python·matlab
曲幽2 天前
你的REST接口还在“过度投喂”数据吗?——FastAPI + GraphQL实战避坑指南
python·fastapi·web·graphql·route·cors·rest·strawberry
用户8358086187912 天前
基于 Self-RAG 与列表级重排序的进阶 RAG 系统设计与实现
python