cv::Mat 和 arma::mat 之间的转换

问题描述 投票:0回答:1

我正在使用 OpenCV,还想添加 mlpack 中的一些很酷的函数,它使用 Armadillo 矩阵。

有没有一种简单的方法可以在 cv::Mat 和 Arms::mat 之间进行转换?

谢谢!

opencv type-conversion armadillo mlpack
1个回答
16
投票

OpenCV 的

Mat
有一个指向其数据的指针。犰狳有一个能够读取外部数据的构造函数。将它们组合在一起很容易。请记住,Armadillo 按列优先顺序存储,而 OpenCV 使用行优先顺序。我想您需要在之前或之后添加另一个转换步骤。

cv::Mat opencv_mat;    //opencv's mat, already transposed.
arma::mat arma_mat( reinterpret_cast<double*>(opencv_mat.data), opencv_mat.rows, opencv_mat.cols )


    

cv::Mat
构造函数具有接受指向数据的指针的形式,并且
arma::mat
具有指向其数据的双*指针的函数,称为memptr()。

所以,如果您想从

arma::mat
转换为
cv::Mat
,这应该可行:

cv::Mat opencv_mat( rows, cols, CV_64FC1, arma_mat.memptr() )
© www.soinside.com 2019 - 2024. All rights reserved.