当前位置: 首页 > 工具软件 > cv_resume > 使用案例 >

cv::HoughLinesP()&CV::HoughLines()&cv::HoughCircles()

隗星驰
2023-12-01

函数作用

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//圆半径的最大值
				  )
 类似资料: