将cv::Mat之间的矩阵转换为Eigen:: matrix和
Casting matrix between cv::Mat to Eigen::Matrix and
我有:
Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> someMatrixEigen = someMatrix();
如果我要创建一个cv::Mat头(与类型CV_8U),我应该能够做到这一点,对吗?
cv::Mat someMatrixOCV(someMatrixEigen.rows(), someMatrixEigen.cols(), CV_8U, someMatrixEigen.data());
然后,如果我有cv::Mat anotherMatrixOCV
,回到Eigen,这也应该工作吗?
Eigen::Map<Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> > anotherMatrixEigen(anotherMatrixOCV.ptr<int>(), anotherMatrixOCV.rows, anotherMatrixOCV.cols);
这里的整型兼容吗?当我使用float和CV_32F时,我似乎能够做到这一点,但整数版本似乎不起作用(segfault)。
CV_8U
似乎是一个无符号类型(具体来说,8位,例如unsigned char
),而你的矩阵是一个有符号的int
类型(多少位取决于你的编译器,但超过8)。你可以尝试使用CV_32S
进行转换,或Eigen::Matrix<unsigned char, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
。
- 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和