模板匹配 粗定位
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:为用来选取掩模的子集,可选项
示例:文章来源:https://www.toymoban.com/news/detail-611571.html
rv = cv2.matchTemplate(img, template, cv2.TM_SQDIFF)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(rv)
卡尺找圆 精细定位
卡尺的原理:
是找N个小矩形ROI里面的灰度值突变的地方。即:遍历每个小矩形ROI,分别找到1个点,这个点是灰度突变的峰值。然后把这N个点拟合成直线或者圆。文章来源地址https://www.toymoban.com/news/detail-611571.html
到了这里,关于【传统视觉】模板匹配和卡尺圆检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!