eigen 与 opencv 矩阵的相互转换
需要包含以下头文件:
#include <Eigen/Dense>
#include <Eigen/Core>
// eigen 头文件必须放在 opencv 前面
#include <opencv2/opencv.hpp>
#include <opencv2/core/eigen.hpp>
然后使用 cv::cv2eigen
和 cv::eigen2cv
进行转换。
参考代码
#include <iostream>
#include <Eigen/Dense>
#include <Eigen/Core> // eigen 头文件必须放在 opencv 前面
#include <opencv2/opencv.hpp>
#include <opencv2/core/eigen.hpp>
int main()
{
cv::Mat c_data(2,2,CV_32F);
c_data = (cv::Mat_<float>(2,2) << 1,2,3,4);
/* cv::Mat ---> Eigen::Matrix */
Eigen::Matrix2d m_data;
cv::cv2eigen(c_data, m_data);
std::cout << m_data << std::endl;
/* Eigen::Matrix --> cv::Mat */
cv::Mat c_data2;
cv::eigen2cv(m_data, c_data2);
std::cout << c_data2 << std::endl;
return 0;
}