10

我正在使用 OpenCV,并且还想从使用犰狳矩阵的mlpack添加一些很酷的功能。

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

谢谢!

4

1 回答 1

15

OpenCVMat有一个指向其数据的指针。Armadillo 有一个能够从外部数据读取的构造函数。将它们放在一起很容易。请记住,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一个用于指向其数据的 double* 指针的函数,称为 mempr()。

因此,如果您想从 转换arma::matcv::Mat,这应该可以:

cv::Mat opencv_mat( rows, cols, CV_64FC1, arma_mat.memptr() )
于 2014-11-17T15:01:03.187 回答