一个矩阵中的数据在 C++ 中自动复制到 OpenCV 中的另一个矩阵

data in one matrix automatically getting copied to another matrix in opencv in c++

本文关键字:复制 另一个 OpenCV C++ 数据 一个      更新时间:2023-10-16

我做了一个函数,在其中我传递一个矩阵并返回处理后的矩阵,但是处理矩阵的数据被复制到我传递的矩阵中,例如。

    output=processMatrix(srcCopy);

然后当我显示这两个矩阵时,我在 srcCopy 和输出中得到相同的图像,我将它们的内存分配为;

    output=Mat(image.rows,image.cols,CV_8UC1 );
    srcCopy=Mat(image.rows,image.cols,CV_8UC1 );

问题是cv::Mat复制构造函数执行源cv::Mat浅拷贝。看这里。您可能需要做的是使用 cv::MAt::clone() 方法创建原始克隆。然后,可以避免函数参数列表中的浅拷贝:

cv::Mat skeletonize(const cv::Mat& m) { 
  // use clone() in here to make a new Mat and return it
}

您可以使用Mat Mat::clone()来创建副本。

Mat dst= src.clone();
src.Release();

垫子克隆的文档