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

时间:2012-07-05 22:11:02

标签: c++ opencv

如何将数据从cv :: Mat复制到CvMat,反之亦然?

2 个答案:

答案 0 :(得分:9)

根据documentation for cv::Matcv::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 :(得分:1)

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

“从Mat到CvMat或IplImage的向后转换是通过强制转换运算符Mat :: operator CvMat()const和Mat :: operator IplImage()提供的。运算符不会复制数据。”