本文主要是介绍试用ceres写一个拟合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//拟合函数: y=ax^4+bx^3+cx^2+dx+e#include <iostream>
#include <opencv2/core/core.hpp>
#include <ceres/ceres.h>struct function_residual
{function_residual(double x_, double y_) : x(x_), y(y_){}template<typename T>bool operator()(const T* const abcde, T* residual) const{residual[0] = T(y)-(abcde[0]*T(x)*T(x)*T(x)*T(x)+abcde[1]*T(x)*T(x)*T(x)+abcde[2]*T(x)*T(x)+abcde[3]*T(x)+abcde[4]);//这里记得要将x和y进行T类型转换!!!return true;//这里记得return!!!!!!!!}const double x, y;
};int main()
{using namespace std;double a=1.0, b=2.0, c=3.0, d=4.0, e=5.0;int N = 100;cv::RNG rng;//创建一个随机数发生器random number generatorvector<double> x_data, y_data;for (int i = 0; i &l
这篇关于试用ceres写一个拟合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!