cv::HoughLinesP()和CV::HoughLines():检测直线
cv::HoughCircles():检测圆
void HoughLinesP(InputArray image, // 源图像,需为8位的单通道二进制图像
OutputArray lines, // 每一条线由具有四个元素的矢量(x_1,y_1, x_2, y_2)
double rho, // double类型的rho, 以像素为单位的距离精度一般为1
double theta, // double类型的theta,以弧度为单位的角度精度一般为CV_PI/180
int threshold,
// 累加平面的阈值参数,大于阈值 threshold 的线段才可以被检测通过并返回到结果中。
double minLineLength = 0,
// 最低线段的长度
double maxLineGap = 0
// 有默认值0,允许将同一行点与点之间连接起来的最大的距离。
)
void cv::HoughLines (InputArray image, //8位,单通道二值源图像。该函数可以修改图像。
OutputArray lines,//输出直线vector(ρ,θ) or (ρ,θ,votes)
//ρ是距坐标原点的距离,
//θ是以弧度表示的线旋转角度(0∼垂直直线,π/2∼水平直线)
//votes 曲线交点累加计数
double rho, //以像素为单位的累加器的距离分辨率。 推荐用1.0;
double theta, //以弧度表示的累加器角度分辨率。 CV_PI/180
int threshold,
// 累加平面的阈值参数,大于阈值 threshold 的线段才可以被检测通过并返回到结果中。
double srn = 0,
double stn = 0,
double min_theta = 0, //检查线条的最小角度。必须介于0和maxθ之间。
double max_theta = CV_PI //要检查线条的最大角度。必须介于minθ和CV_PI之间。
)
void HoughCircles(InputArray image,
OutputArray circles,
int method, // 检测方法,目前有HOUGH_GRADIENT和HOUGH_GRADIENT_ALT方法
double dp,
// 如果dp= 1时,累加器和输入图像具有相同的分辨率。如果dp=2,累加器便有输入图像一半那么大的宽度和高度。
double minDist, //为霍夫变换检测到的圆的圆心之间的最小距离
double param1 = 100, //它是第三个参数method设置的检测方法的对应的参数
double param2 = 100,
// 第三个参数method设置的检测方法的对应的参数
// 越小,就可以检测到更多根本不存在的圆
// 越大,能通过检测的圆就更加接近完美的圆形
int minRadius = 0, //圆半径的最小值
int maxRadius = 0//圆半径的最大值
)