openCV学习笔记(九)-- 霍夫变换,像素重映射

1.霍夫直线检测
·霍夫空间是一个极坐标空间

·假设有N个点,我们要检测其中的直线,也就是我们要找到具体的r和theata。对于上面所说的每个点可以通过无数条直线,这里我们设为n条(通常 n = 180),则我们一起可以找到Nn个(r, theata),对这Nn个(r,theata),我们可以利用统计学,统计到在theta=某个值theta_i时,多个点的r近似相等于r_i。也就是说这多个点都在直线(r_i,theta_i)上。
原文链接:https://blog.youkuaiyun.com/weixin_40196271/article/details/83346442

·最后通过极坐标的r和角度值算回到普通空间的对应坐标值
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
直线变换例子
在这里插入图片描述
在这里插入图片描述
该方法因为要反变换会平面空间,所以比较复杂

在这里插入图片描述
该方法省略了中间的变换过程,直接返回两个点,简化计算

在这里插入图片描述

//变换步骤  1.边缘检测 2.转换为灰度图像 3.用houghlineP找出两点 4.将两点化成线并显示

	//extract edge 
	Canny(src, dst, 150, 200);//默认ksize为3
	cvtColor(dst, gray_src, CV_GRAY2BGR);
	imshow("edge", gray_src);

	vector<Vec4f> plines;//定义一个容器装输出的坐标值
	HoughLinesP(dst, plines, 1, CV_PI / 180.0, 10, 0, 10);//定义最大插值可以将比较远的点也合为一条线,有较强的抗锯齿效果
	Scalar color = Scalar(0, 0, 255);//给画线填充颜色
	for (size_t i = 0; i < plines.size(); i++)
	{
   
   
		Vec4f hline = plines[i];
		//画线 输出的坐标点一般为x0,y0,x1,y1
		line(gray_src, Point(hline[0], hline[1]), Point(hline[2], hline[3]), color, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值