做毕业论文中我用Opencv中的void cvFitLine( const CvArr* points, int dist_type, double param,
double reps, double aeps, float* line )做直线拟合,寻找一幅图像中的直线的倾斜度(斜率)和直线与图像中心的位移偏差,始终不出结果。搜了好多网址找到了两个这个函数的使用例子,但是我发现还是不好用,编译提示points类型错误。无奈之下自己写了一个直线拟合的C++程序,这个程序只是一个雏形。坐标点序列输入还很繁琐,而且每次使用时必须输入坐标点对数。如果能做到只给出坐标数组就能输出线性函数参数(a,b)就很好了。在此我不做修改,希望你能把它升级,使它功能更强。请指教。

#include <iostream.h>

#include <math.h>

double* FitLine(double* x,double* y,int n)

{

double K[2]={0.,0.};

double sum[4]={0.,0.,0.,0.};

for(int i=0;i<n;i++)

{

sum[0]+=x[i];

sum[1]+=x[i]*x[i];

sum[2]+=y[i];

sum[3]+=x[i]*y[i];

}

cout<<sum[0]<<"  "<<sum[1]<<"  "<<sum[2]<<"  "<<sum[3]<<endl;

K[0]=((n+1)*sum[3]-sum[0]*sum[2])/((n+1)*sum[1]-sum[0]*sum[0]);

K[1]=(sum[0]*sum[3]-sum[1]*sum[2])/(sum[0]*sum[0]-(n+1)*sum[1]);

return K;

}

void main()

{

double a[9]={0.,1.,2.,3.,4.,5.,6.,7.,8.};

double b[9]={5.,6.,7.,8.,9.,10.,11.,12.,13.};

double* line;

double angle=0.;

double E=0.;

int height=10;                    //图像像素高度

int width=10;                     //图像像素宽度

line=FitLine(a,b,9);

cout<<line[0]<<"  "<<line[1]<<endl;

//求偏差角和偏差量图像像素高height  宽width

if(line[0]<0)

{

angle=-atan(line[0]);

E=-((line[0]*10-10)/2+line[1]);    //将坐标原点移到图像中心

}

if(line[0]>0)

{

angle=atan(line[0]);

E=((line[0]*10-10)/2+line[1]);

}

else

angle=0;

E=line[1];

cout<<angle<<"xxx"<<E<<endl;

}

多多交流!

FitLine+直线拟合+C++相关推荐

  1. opencv+hough直线检测+fitline直线拟合

    #include <iostream> #include <opencv2/highgui/highgui.hpp> #include <opencv2/core/cor ...

  2. OpenCV fitline直线拟合函数学习

    下图是OpenCV官方文档中,对直线拟合函数的详细介绍: fitLine()函数用于,对二维或三维空间中的点集进行直线拟合.共有六个参数: param 1:输入的点集,可以是Mat或者vector&l ...

  3. opencv之fitline直线拟合

    fitline拟合函数: CV_EXPORTS_W void fitLine( InputArray points, //待输入点集 OutputArray line, //输出点集(一个是方向向量, ...

  4. 关于opencv fitLine直线拟合得斜率及截距

    函数接口:C++: void fitLine(InputArray points, OutputArray line, int distType, double param, double reps, ...

  5. 【OpenCV3】直线拟合——cv::fitLine()详解

    在图像处理中,通常会遇到根据给定的点集(比如轮廓)拟合出一条直线的情形.opencv2和opencv3中提供了一个专门用于直线拟合的函数--cv::fitLine(). 下面对该函数作一详细的介绍. ...

  6. OpenCV | 直线拟合fitline函数(Python)

    简介 之前做直线拟合时,自己写了一个利用最小二乘做直线拟合的程序,但是由于直线检测的误差比较大,拟合的效果并不好.个人不知道是什么原因,因此想尝试更改一下直线拟合的算法,后来找到了OpenCV中的fi ...

  7. c++ opencv fitLine函数拟合直线

    c++ opencv fitLine函数拟合直线 fitLine 函数 void fitLine( InputArray points, OutputArray line, int distType, ...

  8. OpenCV—直线拟合fitLine

    本文的主要参考为官方文档OpenCV249-fitLine和博客-OpenCV 学习(直线拟合) 以及<Learning OpenCV 3>page425-426 OpenCV中提供的直线 ...

  9. OpenCV_11 轮廓检测:图像的轮廓+绘制轮廓+轮廓近似+边界矩形+椭圆拟合+直线拟合

    1 图像的轮廓 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度.轮廓是图像目标的外部特征,这种特征对于我们进行图像分析,目标识别和理解等更深层次的处理都有很重要的意义. ...

最新文章

  1. 计算机能思考吗?图1专题6:“人脑是计算机吗?”
  2. apache属于哪个公司
  3. MANIFEST.MF文件的格式
  4. poj2420 A Star not a Tree? 【模拟退火】
  5. 神策数据全新服务体系——打造用户行为分析领域服务最高标准
  6. 02-go的IDE安装
  7. 查看回调函数执行在那个线程中的方法
  8. 安装deepin_deepin使用笔记,安装steam客户端
  9. 如何锻炼一个人处理问题的能力?
  10. 连接共享打印机0x0000011b win10
  11. 重磅丨深度解读UN报告:AI新技术革命将如何重塑就业和全球化格局?
  12. 3D沙盒游戏开发日志4——网格寻路系统
  13. Hbase Locality
  14. 汉语计算机语言,从计算机编程语言说汉语的比较优势
  15. 时间格式转化日期比较指定日期YY-MM 的前某个月
  16. Android软件开发用什么语言?
  17. python用re模块实现数学公式计算
  18. 为什么说“管理是一门技术、更是一门艺术”
  19. 线性方程组与矩阵的秩
  20. promise的实例方法、静态方法

热门文章

  1. MinGW介绍与使用
  2. Java中静态方法的调用格式
  3. 实现企业邮箱登录验证功能
  4. mac地址是由多少个bit组成_MAC地址是什么,MAC地址是怎么构成的,MAC地址占多少位,作用如何? 简单答案!!...
  5. 注意BeanPostProcessor启动时对依赖Bean的“误伤”陷阱(is not eligible for getting processed by all...)
  6. 【耀杨闯荡华儿街】(面试官)曹阿门:给我讲讲多线程;耀杨:md心态崩了~
  7. 秋季天凉易感冒 冷水洗脸来预防
  8. 传感器怎么获取障碍物的宽度信息_基于多传感器信息融合的机器人障碍物检测...
  9. 1000元一根的Type C数据线
  10. 【开发日常】【Java】Java小程序汽车租赁