0
这个post告诉我们如何将cv::Mat
映射到Eigen矩阵而不复制数据,它工作正常,但有一件事我不明白。将OpenCV的cv :: Mat转换为Eigen
Mat A(20, 20, CV_32FC1);
cv::randn(A, 0.0f, 1.0f); // random data
// Map the OpenCV matrix with Eigen:
Eigen::Map<Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>> A_Eigen(A.ptr<float>(), A.rows, A.cols);
的问题是,在Mat A
不告诉每行应该采取A_Eigen
多少字节,据我所知的OpenCV的cv::Mat
可能会或可能不会做填充每一行,我需要告诉Eigen每行有多少字节(如何?)?或者我可以放心地忽略它?
PS:我用的而不是使用A.cols
本征3
我可能会使用OpenCV给出的[转换函数](https://github.com/Itseez/opencv/blob/master/modules/core/include/opencv2/core/eigen.hpp)(第二个答案链接的问题)。 [OpenCV文档](http://docs.opencv.org/master/d0/daf/group__core__eigen.html#ga28d4c291bb74c3b915e2fd62f03906b1&gsc.tab=0) – Miki
@Miki谢谢,opencv解决方案将分配新缓冲区并复制数据(动态矩阵),但我想重用现有的缓冲区,当训练大量数据时,减少内存的使用是至关重要的,否则它可能会抛出bad_alloc异常 – StereoMatching