eigen::vector3d 转换为cv::Mat的函数
时间: 2023-07-02 22:18:46 浏览: 150
可以使用以下函数将Eigen::Vector3d转换为cv::Mat:
```
cv::Mat eigen2cv(const Eigen::Vector3d& eigen_vec)
{
cv::Mat cv_vec = (cv::Mat_<double>(3, 1) << eigen_vec[0], eigen_vec[1], eigen_vec[2]);
return cv_vec;
}
```
该函数将Eigen::Vector3d类型的向量转换为3x1的cv::Mat类型的向量。
相关问题
Eigen::Vector3f转换成cv::Mat
可以使用`cv::Mat`的构造函数将`Eigen::Vector3f`转换成`cv::Mat`,如下所示:
```cpp
Eigen::Vector3f vec;
// 假设已经给vec赋值
cv::Mat mat = cv::Mat(vec);
```
此时得到的`mat`是一个3行1列的单通道浮点型矩阵,每个元素分别对应`vec`中的每个分量。如果需要得到一个单行或单列的矩阵,可以使用`cv::Mat`的`reshape()`函数进行转换,如下所示:
```cpp
// 将3行1列的矩阵转换为3列1行的矩阵
cv::Mat mat_col = mat.reshape(1, 3);
// 将3行1列的矩阵转换为1行3列的矩阵
cv::Mat mat_row = mat.reshape(1, 1);
```
注意,`Eigen::Vector3f`和`cv::Mat`中的数据是按列存储的,因此在进行转换时需要注意维度的匹配。
Eigen::Vector3f的变量转换为cv::Mat
假设你已经定义了一个`Eigen::Vector3f`类型的变量`vec`,可以使用如下代码将其转换为`cv::Mat`类型的矩阵:
```cpp
Eigen::Vector3f vec(1.0f, 2.0f, 3.0f); // 定义一个3维向量
cv::Mat mat = cv::Mat(vec); // 将向量转换为矩阵
```
在这个示例中,我们将`vec`定义为一个3维向量,并使用`cv::Mat`的构造函数将其转换为`cv::Mat`类型的矩阵。转换后得到的`mat`是一个3行1列的单通道浮点型矩阵,每个元素分别对应`vec`中的每个分量。如果需要得到一个单行或单列的矩阵,可以使用`cv::Mat`的`reshape()`函数进行转换,具体方法可以参考前面的回答。
注意,`Eigen::Vector3f`和`cv::Mat`中的数据是按列存储的,因此在进行转换时需要注意维度的匹配。
阅读全文