lines = cv.HoughLinesP( image, rho, theta, threshold[, lines[, minLineLength[, maxLineGap]]] )
这个api的作用是
lines
的输出是(x1,y1,x2,y2)
rho
是以像素为单位的分辨率 一般取1
theta
以弧度为单位的分辨率 一般取为np.pi/180
threshold
阈值 概率霍夫变换里面要用到的阈值,低于该阈值的直线会被忽略,Hough变换可以理解为投票箱和投票数之间的关系,每个投票箱代表一个直线,投票数达到阈值的直线会被保留,其他的会被删除
minLineLength
为最小直线长度 (更短的直线会被消除)
maxLineGap
为最大直线间隙 一条线段的间隙长度大于这个值会被视为是两条分开的线段
circles = cv.HoughCircles( image, method, dp, minDist[, circles[, param1[, param2[, minRadius[, maxRadius]]]]] )
image
输入要求是8位单通道灰度图
circles 输出是(x,y,radius)或者(x,y,radius,votes)
method为使用霍夫变换圆检测的算法,Opencv2.4.9只实现了2-1霍夫变换,它的参数是CV_HOUGH_GRADIENT
dp霍夫空间的分辨率,dp=1时表示霍夫空间与输入图像空间的大小一致,dp=2时霍夫空间是输入图像空间的一半
minDist为圆心之间的最小距离,如果检测到的两个圆心之间距离小于该值,则认为它们是同一个圆心
param1
param2
minRadius 为所检测到的圆半径的最小值
maxRadius 为所检测到的圆半径的最大值
img = cv.circle( img, center, radius, color[, thickness[, lineType[, shift]]] )
根据前面的分析,这个参数就没啥好说的了,都一样