在复制图像时,有两种情况,一种是浅拷贝,一种是深拷贝。
所谓浅拷贝仅仅是引用,即创建了一个新的矩阵头,仍然指向原来的数据空间。
而所谓的深拷贝,是指完全创建一整套新的Mat对象(包括矩阵头和数据空间)。
操作()和 = 操作都属于浅拷贝,例如:
Mat image = imread("1.png" , 0) ;
Mat image1(image) ;//仅是创建了Mat的头部分,image1与image共享数据区
Mat image2 = image ;//仅是创建了Mat的头部分,image1与image共享数据区
clone()和copyto()属于深拷贝,因为它们都会创建一个独立的空间,不会相互影响,例如
Mat image3 = image.clone() ;//完全拷贝,把image中的所有信息拷贝到image3中
Mat image4;
image.copyTo(image4)