我已经创建了一个函数,其中我正在传递一个矩阵并返回处理后的矩阵,但是处理后的矩阵的数据被复制到我传递的矩阵中,例如。
output=processMatrix(srcCopy);
然后当我显示这两个矩阵时,我在 srcCopy 和输出中得到相同的图像,我将它们分配为内存;
output=Mat(image.rows,image.cols,CV_8UC1 );
srcCopy=Mat(image.rows,image.cols,CV_8UC1 );
我已经创建了一个函数,其中我正在传递一个矩阵并返回处理后的矩阵,但是处理后的矩阵的数据被复制到我传递的矩阵中,例如。
output=processMatrix(srcCopy);
然后当我显示这两个矩阵时,我在 srcCopy 和输出中得到相同的图像,我将它们分配为内存;
output=Mat(image.rows,image.cols,CV_8UC1 );
srcCopy=Mat(image.rows,image.cols,CV_8UC1 );
问题是cv::Mat
复制构造函数对 source做了一个浅拷贝cv::Mat
。见这里。您可能需要做的是使用该cv::MAt::clone()
方法创建原始副本的克隆。然后,可以避免函数参数列表中的浅拷贝:
cv::Mat skeletonize(const cv::Mat& m) {
// use clone() in here to make a new Mat and return it
}