opencv_21霍夫变换

霍夫变换原理

//在边缘检测已经完成时(Canny)霍夫变换用来做直线检测
//将图像有空域转换到极坐标空间
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
//通过该公式将空域上的像素点转换到极坐标的空间。
//空域上不同的x,y有不同的θ(0-180/0-360)与其对应。在极坐标空间形成了一条曲线。
//若所有曲线汇聚到一点,则这些(x,y)属于同一条直线。

在这里插入图片描述
//获得霍夫空间的曲线如何反推回空域坐标。
在这里插入图片描述
//向该公式中输入不同的x,得到y值,若y值在图像空间内则保留,超出平面空间则舍弃。
//比较麻烦,一般不使用,因为求到的r,θ需要反变换到空域。

cv::HoughLines{
输入图像(8位灰度图),
输出极坐标来表示直线,
生成极坐标时的像素扫描步长,1
生成极坐标时的角度步长(每次1),
阈值(获得足够交点的极坐标被看成是直线)double srn是否用多尺度霍夫变换(0为经典霍夫变换)(图像金字塔)
double stn是否用多尺度霍夫变换(0为经典霍夫变换),
角度扫描范围(0-180)默认即可,
CV_PI
}

//常用API

HoughLinesP
{
输入图像(8位灰度图),
输出极坐标来表示直线,
生成极坐标时的像素扫描步长,1
生成极坐标时的角度步长(每次1),
阈值(获得足够交点的极坐标被看成是直线),
最小值线长度,(小于该阈值像素的线段,舍弃)
最大间隔//两条线段最大间隔多少个像素认为是一条直线
}
Line()绘制直线
line{
  要绘制线段的图像,//24位,只有三通道的图像,颜色赋值才有意义
  线段起点,
  线段终点,
  颜色,
  线宽,
  线型
}

//从保存霍夫空间极坐标转换到空域坐标的容器中读取起始点与终止点。
for (int i = 0; i < plines.size(); i++)
	{
		Vec4f hline = plines[i];
		line(dst, Point(hline[0], hline[1]), Point(hline[2], hline[3]), color, 3);
	}

在这里插入图片描述
//注意vector<>的命名空间
using namespce std;

#include<opencv2/opencv.hpp>
#include<iostream>
#include<math.h>

using namespace std;
using namespace cv;
int main()
{
	Mat gray_src, out_edge,dst;
	Mat src = imread("C:\\Users\\Administrator\\Pictures\\timg.jpg");
	if (src.empty())
	{
		printf("ould not find image \n");
		return -1;
	}
	namedWindow("opencv set up demo", WINDOW_AUTOSIZE);
	imshow("opencv set up demo", src);
	cvtColor(src, gray_src, COLOR_BGR2GRAY);
	Canny(gray_src, out_edge, 100, 200);

	cvtColor(out_edge, dst, COLOR_GRAY2BGR);
	vector <Vec4f> plines;//注意命名空间std
	HoughLinesP(out_edge, plines, 1, CV_PI / 180.0, 10, 0, 50);
	//画直线
	Scalar color = Scalar(0, 255, 0);
	for (int i = 0; i < plines.size(); i++)
	{
		Vec4f hline = plines[i];
		line(dst, Point(hline[0], hline[1]), Point(hline[2], hline[3]), color, 3);
	}
	imshow("hough", dst);
	waitKey(0);
	return 1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值