【发布时间】:2015-01-14 10:34:15
【问题描述】:
【问题讨论】:
标签: opencv type-conversion armadillo mlpack
【问题讨论】:
标签: opencv type-conversion armadillo mlpack
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* 指针的函数,称为 mempr()。
所以,如果您想从 arma::mat 转换为 cv::Mat,这应该可以:
cv::Mat opencv_mat( rows, cols, CV_64FC1, arma_mat.memptr() )
【讨论】:
cv::Mat 构造函数有一个接受指向数据的指针的形式,arma::mat 有一个函数,用于指向其数据的double* 指针,称为memptr()。所以,cv::Mat opencv_mat( rows, cols, CV_64FC1, arma_mat.memptr() ) 应该可以工作。此外,如果答案解决了问题,请考虑将其标记为接受。
reinterpret_cast<double*>(opencv_mat.data),至少在我的编译器中是这样。除此之外,它工作正常,谢谢!