⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 使用opencv的最小二乘法解方程
💻 CPP
字号:
/*
最小二乘法的试验程序
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -