OpenCV2编程手册笔记之 7.4用直线拟合一组点

本文介绍了如何使用OpenCV2来精确估计一组点的直线位置和方向。通过遍历图像找到直线上的点,利用欧氏距离进行直线拟合。详细讲述了fitline函数的参数及返回值,包括直线的方向向量和坐标点,并展示了如何根据拟合结果绘制直线,允许自定义直线的长度和宽度。
摘要由CSDN通过智能技术生成

    在一些应用中,我们不仅需要检测直线,还需要获取直线位置和方向的精确估计,这次我们将介绍最贴合一组点的直线。

    在上一章博客中,我们说到了概率霍夫变换,它的n*4的返回向量lines中就包含了每一条直线的所有信息(每条直线的起始点和终止点)参考我的上一个博客点击打开链接

    我们将选定的直线画在一张准备好的白板图像oneline中,并用非操作进行黑白的翻折。使得直线更加明显。

    现在,我们遍历这张oneline图像,每当出现白色值的时候,就说明我们找到了一个直线上的点,我们把这个点的信息记录在向量points中。

        //将选定的直线中所有的坐标确定下来,并储存在points中
	//push_back的含义为在向量的末尾加上数据
	//vector在刚刚声明定义的时候大小是0,也就是vector.size=0
	std::vector<cv::Point> points;
	for (int y = 0; y < oneline.rows; y++)
	{
		uchar* rowPtr = oneline.ptr<uchar>(y);
		for (int x = 0; x < oneline.cols; x++)
		{
			if (rowPtr[x])
			{
				points.push_back(cv::Point(x, y));
				std::cout << x << " " << y << endl;
			}
		}
	}
    我们在拥有了这么多点之后,现在就要进行图像拟合,我们使用cv::fitline函数

  void fitLine( InputArray points, OutputArray line, int distType,
                           d
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值