Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv cv::Mat和arma::Mat之间的转换_Opencv_Type Conversion_Armadillo_Mlpack - Fatal编程技术网

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

Opencv cv::Mat和arma::Mat之间的转换,opencv,type-conversion,armadillo,mlpack,Opencv,Type Conversion,Armadillo,Mlpack,我正在使用OpenCV,还想添加一些来自的很酷的函数,即使用矩阵 在cv::Mat和arms::Mat之间转换是否有一种简单的方法 谢谢 OpenCV的Mat有一个指向其数据的指针。犰狳有一个能够读取外部数据的构造函数。把它们放在一起很容易。请记住Armadillo以列主顺序存储,而OpenCV使用行主顺序。我想您需要在转换之前或之后添加另一个步骤 cv::Mat opencv_mat; //opencv's mat, already transposed. arma::mat arma_

我正在使用OpenCV,还想添加一些来自的很酷的函数,即使用矩阵

在cv::Mat和arms::Mat之间转换是否有一种简单的方法


谢谢

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 )

您发布的代码执行隐式转置,因此如果您有一个行主要的OpenCV矩阵(即每行一个观察值),那么您得到的犰狳矩阵是列主要的(每列一个观察值)。这是幸运的,因为mlpack的算法需要列主数据。:)它起作用了!谢谢你,a-Jays!但是有没有一种方法可以将arma::mat转换为cv::mat呢?
cv::mat
构造函数有一个接受指向数据的指针的表单,
arma::mat
有一个用于指向其数据的
double*
指针的函数,名为
memptr()
。因此,
cv::Mat opencv\u Mat(行、列、cv\u 64FC1、arma\u Mat.memptr())
应该可以工作。此外,考虑标记答案如果它解决了问题。只是一个打字我发现它应该是<代码> RealTytCube(OpenPCvMa.Data),至少用我的编译器。除此之外,它工作得很好,谢谢!
cv::Mat opencv_mat( rows, cols, CV_64FC1, arma_mat.memptr() )