一、引言
对于Mat容器的拷贝有三种方式:
(1)使用构造函数
Mat A=imread("girl.jpeg");
Mat B(A);//将A拷贝到B
(2)利用赋值符号进行拷贝
Mat A=imread("girl.jpeg");
Mat B=A;
(3)使用方法Mat::copyTo()
Mat A=imread("girl.jpeg");
Mat B;
A.copyTo(B);
(4)使用方法Mat::clone()
Mat A=imread("girl.jpeg");
Mat B=A.clone();
但是,对于上面不同的拷贝方法,对于图片的操作结果是不一样的,由此引出浅拷贝与深拷贝。
先说结论:(1) 和(2)是属于浅拷贝;(3)和(4)属于深拷贝。
二、浅拷贝
浅拷贝可以理解为仅仅是将地址指针给拷贝了,并没有为新的对象开辟新的内存空间,也就是说当改变新的对象时,原来的对象也会被改变。