OpenCV_HoughLinesP()函数检测直线

版权声明:本文为业余狙击手原创文章,欢迎阅读,欢迎转载,转载请注明出处,谢谢。 https://blog.csdn.net/sxlsxl119/article/details/84837518

一,原图

二,代码

//霍夫变换检测直线
void HoughLinesP_Test()
{
	Mat src = imread("D:\\原图.jpg", 0);
	Mat CannyImg;
	Canny(src, CannyImg, 140, 250, 3);

	imshow("CannyImg", CannyImg);

	Mat DstImg;
	cvtColor(src, DstImg, CV_GRAY2BGR);

	vector<Vec4i> Lines;
	//void HoughLinesP(InputArray image, OutputArray lines, double rho, double theta, int threshold,double minLineLength=0, double maxLineGap=0 )
	//image : 边缘检测的输出图像.它应该是个灰度图(但事实上是个二值化图) *
	//lines : 储存着检测到的直线的参数对  的容器,也就是线段两个端点的坐标
	//rho  : 参数极径  以像素值为单位的分辨率.我们使用 1 像素.
	//theta : 参数极角  以弧度为单位的分辨率.我们使用 1度 (即CV_PI / 180)
	//threshold : 要”检测” 一条直线所需最少的的曲线交点 
	//minLinLength : 能组成一条直线的最少点的数量.点数量不足的直线将被抛弃.线段的最小长度
	//maxLineGap : 线段上最近两点之间的阈值									
	HoughLinesP(CannyImg, Lines, 1, CV_PI / 360, 170, 200, 15);
	for (size_t i = 0; i < Lines.size(); i++)
	{
		line(DstImg, Point(Lines[i][0], Lines[i][1]), Point(Lines[i][2], Lines[i][3]), Scalar(0, 0, 255), 2, 8);
	}
	imshow("HoughLines_Detect", DstImg);
	waitKey(0);
}

//测试
void CCutImageVS2013Dlg::OnBnClickedTestButton1()
{
	HoughLinesP_Test();
}

三,结果

欢迎扫码关注我的微信公众号

猜你喜欢

转载自blog.csdn.net/sxlsxl119/article/details/84837518