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

时间:2014-11-17 13:38:58

标签: opencv type-conversion armadillo mlpack

我正在使用OpenCV,并且还希望添加mlpack使用Armadillo矩阵的一些很酷的函数。

在cv :: Mat和arms :: mat之间有一种简单的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:11)

OpenCV的Mat有一个指向其数据的指针。 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 *指针memptr()。

因此,如果您想从arma::mat转换为cv::Mat,这应该有效:

cv::Mat opencv_mat( rows, cols, CV_64FC1, arma_mat.memptr() )