文章目录
前言
ROS开发时,对于矩阵预算opencv的方法不够好, 一般会用Eigne 矩阵运算库 完成这部分工作。
提示:以下是本篇文章正文内容,下面案例可供参考
一、Eigen是什么?
Eigen是一个基于C++模板的开源库,支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。
二、Eigen使用步骤
1.include Eigen头文件
Eigen库被分为一个Core模块和其他一些模块,每个模块有一些相应的头文件。 为了便于引用,Dense模块整合了一系列模块;Eigen模块整合了所有模块。一般情况下,include<Eigen/Dense> 就够了。
2.opencv和eigen【检查头文件包含顺序】
代码如下(示例):
正确的头文件包含顺序## 标题
#include <Eigen/Dense>
#include <opencv2/core/eigen.hpp>
#include <opencv2/opencv.hpp>
必须保证Dense先包含,再包含eigen.hpp否则编译有问题 : error: ‘Eigen’ does not name a type
三、可能会出现的问题
3.1 编译出错 【cmake出错】,提示include 时找不到unsupported 相关的文件
原因:代码编译的时候找不到unsupported文件 。一般情况下 ubuntu18【linux】系统中,eigen 库贮存的位置是 usr/include/eigen3/ 编译的时候找不到相关文件, 添加软连接, 将文件提取到 include 文件夹借口。
解决方法一:
如:执行命令:sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
如:执行命令:sudo ln -s /usr/include/eigen3/Eigen /usr/include/unsupported
如:执行命令:sudo ln -s /usr/include/eigen3/Eigen /usr/include/signature_of_eigen3_matrix_library
注:博主 将 eigen3中的文件全部映射出来了 , 好像单独映射Eigen文件夹就够了【没试过】
解决方法二: 在CMakeLists.txt文件中指定Eigen的头文件路劲。【不推荐,手动写挺麻烦】
如:include_directories("/usr/include/eigen3")
提示:这里对文章进行总结: