我正在使用 OpenCV,并且还想从使用犰狳矩阵的mlpack添加一些很酷的功能。
是否有一种简单的方法可以在 cv::Mat 和 arm::mat 之间进行转换?
谢谢!
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::mat
为cv::Mat
,这应该可以:
cv::Mat opencv_mat( rows, cols, CV_64FC1, arma_mat.memptr() )