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

Copy data from cv::Mat to CvMat and viceversa

本文关键字:CvMat 反之亦然 复制 Mat 数据 cv      更新时间:2023-10-16

如何在OpenCV中将数据从cv::Mat复制到CvMat和viceversa?

根据 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

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

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