eigen 与 opencv 矩阵的相互转换

需要包含以下头文件:

#include <Eigen/Dense>
#include <Eigen/Core>
// eigen 头文件必须放在 opencv 前面
#include <opencv2/opencv.hpp>
#include <opencv2/core/eigen.hpp>

然后使用 cv::cv2eigencv::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;
}
posted @ 2022-02-21 10:52  Wreng  阅读(561)  评论(0编辑  收藏  举报