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() )