目录
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。
在调用函数之前,要对源图像进行平滑操作。