FitLine+直线拟合+C++
做毕业论文中我用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++相关推荐
- opencv+hough直线检测+fitline直线拟合
#include <iostream> #include <opencv2/highgui/highgui.hpp> #include <opencv2/core/cor ...
- OpenCV fitline直线拟合函数学习
下图是OpenCV官方文档中,对直线拟合函数的详细介绍: fitLine()函数用于,对二维或三维空间中的点集进行直线拟合.共有六个参数: param 1:输入的点集,可以是Mat或者vector&l ...
- opencv之fitline直线拟合
fitline拟合函数: CV_EXPORTS_W void fitLine( InputArray points, //待输入点集 OutputArray line, //输出点集(一个是方向向量, ...
- 关于opencv fitLine直线拟合得斜率及截距
函数接口:C++: void fitLine(InputArray points, OutputArray line, int distType, double param, double reps, ...
- 【OpenCV3】直线拟合——cv::fitLine()详解
在图像处理中,通常会遇到根据给定的点集(比如轮廓)拟合出一条直线的情形.opencv2和opencv3中提供了一个专门用于直线拟合的函数--cv::fitLine(). 下面对该函数作一详细的介绍. ...
- OpenCV | 直线拟合fitline函数(Python)
简介 之前做直线拟合时,自己写了一个利用最小二乘做直线拟合的程序,但是由于直线检测的误差比较大,拟合的效果并不好.个人不知道是什么原因,因此想尝试更改一下直线拟合的算法,后来找到了OpenCV中的fi ...
- c++ opencv fitLine函数拟合直线
c++ opencv fitLine函数拟合直线 fitLine 函数 void fitLine( InputArray points, OutputArray line, int distType, ...
- OpenCV—直线拟合fitLine
本文的主要参考为官方文档OpenCV249-fitLine和博客-OpenCV 学习(直线拟合) 以及<Learning OpenCV 3>page425-426 OpenCV中提供的直线 ...
- OpenCV_11 轮廓检测:图像的轮廓+绘制轮廓+轮廓近似+边界矩形+椭圆拟合+直线拟合
1 图像的轮廓 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度.轮廓是图像目标的外部特征,这种特征对于我们进行图像分析,目标识别和理解等更深层次的处理都有很重要的意义. ...
最新文章
- 计算机能思考吗?图1专题6:“人脑是计算机吗?”
- apache属于哪个公司
- MANIFEST.MF文件的格式
- poj2420 A Star not a Tree? 【模拟退火】
- 神策数据全新服务体系——打造用户行为分析领域服务最高标准
- 02-go的IDE安装
- 查看回调函数执行在那个线程中的方法
- 安装deepin_deepin使用笔记,安装steam客户端
- 如何锻炼一个人处理问题的能力?
- 连接共享打印机0x0000011b win10
- 重磅丨深度解读UN报告:AI新技术革命将如何重塑就业和全球化格局?
- 3D沙盒游戏开发日志4——网格寻路系统
- Hbase Locality
- 汉语计算机语言,从计算机编程语言说汉语的比较优势
- 时间格式转化日期比较指定日期YY-MM 的前某个月
- Android软件开发用什么语言?
- python用re模块实现数学公式计算
- 为什么说“管理是一门技术、更是一门艺术”
- 线性方程组与矩阵的秩
- promise的实例方法、静态方法
热门文章
- MinGW介绍与使用
- Java中静态方法的调用格式
- 实现企业邮箱登录验证功能
- mac地址是由多少个bit组成_MAC地址是什么,MAC地址是怎么构成的,MAC地址占多少位,作用如何? 简单答案!!...
- 注意BeanPostProcessor启动时对依赖Bean的“误伤”陷阱(is not eligible for getting processed by all...)
- 【耀杨闯荡华儿街】(面试官)曹阿门:给我讲讲多线程;耀杨:md心态崩了~
- 秋季天凉易感冒 冷水洗脸来预防
- 传感器怎么获取障碍物的宽度信息_基于多传感器信息融合的机器人障碍物检测...
- 1000元一根的Type C数据线
- 【开发日常】【Java】Java小程序汽车租赁