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