main.cpp

来自「使用opencv的最小二乘法解方程」· C++ 代码 · 共 54 行

CPP
54
字号
/*
最小二乘法的试验程序
Y = a * X + b
已知(X,Y)的三个采样点
求拟合直线的的参数a,b
*/
#include "cv.h"
#include <stdio.h>
#include <math.h>
#define PI 3.1415926

void main()
{


	double *mx;
	double *my;
	double *mc;

	mx = new double[3*3];
	my = new double[3];
	mc = new double[3];

	CvMat Mx,My,Mc;

	cvInitMatHeader(&Mx,3,3,CV_64FC1,mx);
	cvInitMatHeader(&My,3,1,CV_64FC1,my);
	cvInitMatHeader(&Mc,3,1,CV_64FC1,mc);


	cvmSet(&Mx, 0, 0, 120);
	cvmSet(&Mx, 0, 1, 120*120);
	cvmSet(&Mx, 0, 2, 120*120*120);
	cvmSet(&Mx, 1, 0, 160);
	cvmSet(&Mx, 1, 1, 160*160);
	cvmSet(&Mx, 1, 2, 160*160*160);
	cvmSet(&Mx, 2, 0, 200);
	cvmSet(&Mx, 2, 1, 200*200);
	cvmSet(&Mx, 2, 2, 200*200*200);

	cvmSet(&My, 0, 0, 0.841667-1);
	cvmSet(&My, 1, 0, 0.925-1);
	cvmSet(&My, 2, 0, 0);

	cvSolve (&Mx,&My,&Mc,CV_SVD);

	printf("a=%.20f\n",cvmGet(&Mc,0,0));
	printf("b=%.20f\n",cvmGet(&Mc,1,0));
	printf("c=%.20f\n",cvmGet(&Mc,2,0));
	

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?