将数据从cv :: Mat复制到CvMat并反之亦然

问题描述:

如何将数据从cv :: Mat复制到CvMat,并在OpenCV中反过来?将数据从cv :: Mat复制到CvMat并反之亦然

+2

[convert cv :: Mat to const CvMat \ * or CvMat \ *]的可能的重复(http://stackoverflow.com/questions/11027574/convert-cvmat-to-const-cvmat-or-cvmat) – Kiran 2015-04-09 15:18:28

根据documentation for cv::Mat,cv::Mat有一个构造函数,其参数为CvMat *,成员函数为operator CvMat()。因此,两者之间的复制可以通过以下方式轻松完成。

cv::Mat m; 

// populate m 

CvMat n = m; // cv::Mat::operator CvMat() const; 

m = cv::Mat(&n); // cv::Mat::Mat(const CvMat* m, bool copyData = false); 
// or 
m = cv::Mat(&n, true); // to copy the data 
+1

'CvMat n = m;'不要复制数据? – mrgloom 2015-10-12 16:02:21

根据OpenCV的文档(http://docs.opencv.org/2.4/modules/core/doc/basic_structures.html):

“向后转换从垫到或与CvMat IplImage的经由转换运算符垫提供::运算与CvMat()const的和Mat ::运算的IplImage()。操作员不会复制数据。“