OpenCV-Python----学习-----------模板匹配-----------霍夫变换

1.模板匹配

1.1 模板匹配基础

result = cv.matchTemplate(image,templ,method,mask)
. image 为原始图像。
. templ 为模板图像。
. method为匹配方法。
. mask 为模板图像掩模(通常默认)。
. 返回值result是由每个位置的比较结果组合所构成的一个结果集,类型是单通道32位浮点型。
输入图像尺寸是WH,模板的尺寸是wh,则返回值大小为(W-w+1)*(H-h+1)

minVal,maxVal,minLocke,maxLoc=cv.minMaxLoc(src,mask)
. src 为单通道数组
. minVal为返回值的最小值,如果没有最小值,则可以是NULL。
. maxVal为返回值的最大值,如果没有最大值,则可以是NULL。
. minVal为最小值的位置,如果没有最小值,则可以是NULL。
. minVal为最大值的位置,如果没有最大值,则可以是NULL。
. mask为用来选取的掩模的子集,可选项。

在这里插入图片描述

在这里插入图片描述

1.2 多模板匹配

1.2.1 获取匹配位置的集合

res=np.where(res>=threshold)
. res 是函数cv.matchTemplate()进行模板匹配后的返回值。
. threshold是预设的阈值
loc是满足“res>=threshold”的像素点的索引集合

1.2.2 循环

for i in zip(*模板匹配索引集合):
在这里插入图片描述
在这里插入图片描述

1.2.3 调整坐标

numpy.where()得到的形式为“(行号,列号)”
cv.rectangle()使用的形式为“(列号,行号)”
所以 loc[::-1]

1.2.4 标记匹配图像的位置

在这里插入图片描述

在这里插入图片描述

2.霍夫变换

2.1 HoughLines函数

lines=cv.HoughLines(image,rho,theta,threshold)
. image 是输入图像,必须是8位的单通道二值图像
. rho为以像素为单位的距离r的精度。(一般是1)
. theta为角度θ的精度。一般情况下,使用的精度为π/180,表示要搜索所有的可能的角度。
. threshold是阈值。
. 返回值lines中的每个元素都是一对浮点数,表示检测到的直线的参数,即(r,θ),是numpy.ndarray类型。

在这里插入图片描述

在这里插入图片描述

2.2 HoughLinesP函数

lines = cv.HoughLinesP(image,rho,theta,threshold,minLineLength,maxLineGap)
. minLineLength用来控制“接受直线的最小长度”的值,默认为0
. maxLineGap 用来控制接守共线线段之间的最小间隔,即在一条线中两点的最大间隔。如果两点间的间隔超过了参数maxLineGap的值,就认为这两点不在一条直线上。默认值为0。

在这里插入图片描述

在这里插入图片描述

2.3霍夫圆环变换

circles=cv.HoughCircles(image,method,dp,minDist,param1,param2,minRadius,maxRadius)
. image:输入图像,8位的单通道灰度图像。
. method:检测方法(HOUGH_GRADIENT)
. dp: 累计分类器,它是一个分割比率,用来指定图像分辨率与圆心累加器分辨率的比例。
例如dp=1,则输入图像和累加器具有相同的分辨率。
. minDist:圆心间的最小间距。
. param1:它对应的是Canny边缘检测器的高阈值(低阈值为高阈值的二分之一)
. param2:圆心位置必须收到的投票数。
. minRadius:圆半径的最小值。
. maxRadius:圆半径的最大值。
. circles:返回值,由圆心坐标和半径构成的numpy.ndarray。

在调用函数之前,要对源图像进行平滑操作。

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值