将OpenCV的cv::Mat转换为Eigen
Convert the cv::Mat of OpenCV to Eigen
这篇文章向我们展示了如何将cv::Mat
映射到特征矩阵而不复制数据,它工作得很好,但有一件事我不明白。
Mat A(20, 20, CV_32FC1);
cv::randn(A, 0.0f, 1.0f); // random data
// Map the OpenCV matrix with Eigen:
Eigen::Map<Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>> A_Eigen(A.ptr<float>(), A.rows, A.cols);
问题是,Mat A
不告诉A_Eigen
每行需要多少字节,据我所知,OpenCV的cv::Mat
可能会或可能不会在每行上填充,我是否需要告诉特征行多少字节(如何?)?,或者我可以安全地忽略它?
Ps:我使用特征3
使用A.step
(或A.step[0]
或A.step[1]
?)代替A.cols
。如果OpenCV矩阵不连续,则m.step != m.cols*m.elemSize()
。你只需要忽略任何额外的列,例如A_Eigen.block<0,0>(A.rows, A.cols)
。
相关文章:
- C++:如何将 std::vector 操作转换为 Eigen::VectorXf?
- 将 Eigen::MatrixXd 转换为 arma::mat 并在新对象上制作副本
- 将 Eigen::MatrixXd 矩阵转换为 cgal 容器类型
- Eigen::将稀疏矩阵转换为行顺序或列顺序
- 将eigen :: sparsematrix转换为cusparse,反之亦然
- 将 Eigen::TensorMap 转换为 Eigen::Tensor
- 将 Eigen::P ermutationMatrix.indices() 转换为 array/vector
- 将eigen :: arrayxxd转换为eigen :: matrixxd
- c++ lambda 函数,用于将 Eigen::VectorXd 转换为 Eigen::MatrixXd
- 在 Eigen::Matrix 中转换 dolfin::Matrix
- 将双[]转换为eigen :: matrix4d
- C :如何将std ::向量转换为eigen :: matrixxd
- 将PCL点类型XYZ转换为EIGEN VECTOR 4F
- 从 Eigen::CwiseBinaryOp 转换为 MatrixXd 会导致段错误
- 将 pcl::P ointCloud 转换为 Eigen::MatrixBase
- 将 Eigen::matrixXd 转换为 Double
- 将Eigen::VectorXd类型转换为std::vector
- Euler到四元数的转换PCL+Eigen
- 无法从'const Eigen::GeneralProduct<Lhs,Rhs,ProductType>'转换为'double'
- 将cv::Mat之间的矩阵转换为Eigen:: matrix和