一、CMakeLists
cmake_minimum_required(VERSION 3.15)
project(byceres)
#Opencv
find_package(OpenCV REQUIRED)
include_directories(${
OpenCV_INCLUDE_DIRS})
#CERES 调用ceres时候必须调用eigen
#注意这里Ceres只有首字母大写
find_package(Ceres REQUIRED)
#注意这里CERES要大写
include_directories(${
CERES_INCLUDE_DIRS})
#Eigen
include_directories("/usr/include/eigen3")
set(CMAKE_CXX_STANDARD 14)
add_executable(byceres main.cpp)
#注意这里CERES_LIBRARIES
target_link_libraries(byceres ${
OpenCV_LIBS} ${
CERES_LIBRARIES})
这里有两点需要注意:
- find_package(),include_directories,target_link_libraries中ceres的大小写是不一样的
- 调用ceres时候要调用eigen库,要不会报错缺少依赖
二、.cpp文件
#include <iostream>
#include <opencv2/core/core.hpp>
#include <chrono>
#include <ceres/ceres.h>
using namespace std;
//代价函数计算模型
struct CURVE_FITTING_COST{
CURVE_FITTING_COST(double x, double y