opencv矩阵转eigen_OpenCV中的Mat类型与Eigen中的Matrix类型转换

本文介绍了如何在OpenCV的Mat类型与Eigen的Matrix类型之间进行转换,强调了头文件引入顺序的重要性,并提供了转换函数cv::eigen2cv和cv::cv2eigen的使用。还详细对比了Eigen与MATLAB的矩阵操作,包括切片、块、四则运算、逐元素操作等,同时提到了Eigen中的类型转换和数据映射功能。
摘要由CSDN通过智能技术生成

参考链接:

https://blog.csdn.net/chengde6896383/article/details/83448882整体概括了Eigen库中的Matrix类与OpenCV中的Mat类转换过程中的注意事项,尤其是在使用两个不同的第三方依赖库时,头文件的引入顺序很重要,其次就是转换方法。

https://blog.csdn.net/piaoxuezhong/article/details/79110421该博客对Eigen库的使用、Matrix类、Matrix和opencv中Mat的转换,以及与MATLAB中的矩阵操作进行对比,介绍非常详细,值得参考!!

1、首先包含头文件(先包含Eigen相关库,再包含opencv库)

#include #include

2、Eigen与OpenCV之间的交互(EigenOpenCV)

opencv矩阵结构为:cv::Mat,或者cv::Mat_等,当需要与eigen的矩阵结构相互转换时主要使用函数:

cv::eigen2cv和cv::cv2eigen,需要头文件:#includeopencv–>eigen:

3f44e901205dd20446a84aae0317077d.png

eigen–>opencv:

1f8a1d5cfbdc7ae68038f6d5dcb61048.png

补充:

eigen与matlab函数的对应关系可参考https://blog.csdn.net/piaoxuezhong/article/details/79110421

#include // 基本用法

// Eigen // Matlab // 注释

x.size() // length(x) // 向量的长度

C.rows() // size(C,1) // 矩阵的行数

C.cols() // size(C,2) // 矩阵的列数

x(i) // x(i+1) // 访问向量元素(Matlab的下标从1开始计数)

C(i,j) // C(i+1,j+1) // 访问矩阵元素

A << 1, 2, 3, // 初始化A,元素也可以是矩阵,先按列堆叠,再按行堆叠。

4, 5, 6,

7, 8, 9;

B << A, A, A; // B 是3个A水平排列

A.fill(10); // 将A的所有元素填充为10

// Eigen // Matlab 注释

MatrixXd::Identity(rows,cols) // eye(rows,cols) //单位矩阵

C.setIdentity(rows,cols) // C = eye(rows,cols) //单位矩阵

MatrixXd::Zero(rows,cols) // zeros(rows,cols) //全零矩阵

C.setZero(rows,cols) // C = zeros(rows,cols) //全零矩阵

MatrixXd::Ones(rows,cols) // ones(rows,cols) //全一矩阵

C.setOnes(rows,co

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值