gpt4 book ai didi

c++ - 在 cv::Mat 和 Eigen::Matrix 之间转换矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 23:15:52 25 4
gpt4 key购买 nike

假设我有:

Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> someMatrixEigen = someMatrix();

如果我要创建一个 cv::Mat header (类型为 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 时,我似乎能够让它工作,但整数版本似乎不起作用(段错误)。

最佳答案

CV_8U似乎是无符号类型(具体来说,8 位,例如 unsigned char ),而您的矩阵是带符号的 int类型(多少位取决于您的编译器,但多于 8 位)。您可以尝试使用 CV_32S用于转换,或 Eigen::Matrix<unsigned char, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> .

关于c++ - 在 cv::Mat 和 Eigen::Matrix 之间转换矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39886355/

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