获取Eigen::Matrix4f 的前3*3 cv::MAT矩阵
时间: 2024-02-07 11:03:21 浏览: 85
矩阵库Eigen
如果你想将一个Eigen::Matrix4f类型的矩阵转换成OpenCV中的cv::Mat类型的矩阵,并且只保留前3x3的子矩阵,可以使用cv::Mat的构造函数进行转换。
假设你有一个Eigen::Matrix4f类型的矩阵mat,并且你想将其前3x3的子矩阵转换成cv::Mat类型的矩阵,代码示例如下:
```
Eigen::Matrix4f mat = ...; // 定义一个4x4矩阵
cv::Mat mat_top_left(3, 3, CV_32FC1, mat.block<3,3>(0,0).data()); // 提取前3x3矩阵并转换成cv::Mat类型
```
其中,block<3,3>(0,0)表示从(0,0)位置开始,提取3行3列的子矩阵,即前3x3矩阵。然后,使用cv::Mat的构造函数将Eigen矩阵的数据指针传递给cv::Mat对象,从而实现数据的共享。注意,这里的mat_top_left是一个3x3的CV_32FC1类型的矩阵,与Eigen矩阵共享数据。
阅读全文