gpt4 book ai didi

c++ - 将 OpenCV 的 cv::Mat 转换为 Eigen

转载 作者:行者123 更新时间:2023-11-28 06:07:01 31 4
gpt4 key购买 nike

post向我们展示如何在不复制数据的情况下将 cv::Mat 映射到 Eigen 矩阵,它工作正常,但有一件事我不明白。

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 每行应该占用多少字节,cv::OpenCV 的 Mat 可能会或可能不会对每一行进行填充,我是否需要告诉 Eigen 每行有多少字节(如何?)?或者我可以安全地忽略它?

Ps:我用的是Eigen 3

最佳答案

而不是使用 A.cols , 使用 A.step (或 A.step[0]A.step[1] ?)。如果 OpenCV 矩阵不是 continuous , 然后 m.step != m.cols*m.elemSize() .您只需要忽略任何其他列,例如与 A_Eigen.block<0,0>(A.rows, A.cols) .

关于c++ - 将 OpenCV 的 cv::Mat 转换为 Eigen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32186143/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com