OpenCV学习心得:vector<Mat>数据存储问题

一、推荐存储方式

vector masks;
Mat img;

masks.pushback(img.clone());   //必须使用clone或者copyto

二、Mat的深拷贝,浅拷贝

1、浅拷贝

      不复制数据只创建矩阵头,数据共享(更改a,b,c的任意一个都会对另外2个产生同样的作用)

Mat a;

Mat b = a; //a "copy" to b

Mat c(a); //a "copy" to c

2、深拷贝

Mat a;

Mat b = a.clone(); //a copy to b

Mat c;

a.copyTo(c); //a copy to c 

三、vector的pushback()

        如果直接使用变量名,调用的是浅拷贝,

        若后续img重新赋值,指向不同的数据,则masks中存储的数据全部改变

vector《Mat> masks;
Mat img;

masks.pushback(img);

你可能感兴趣的:(OpenCV,opencv)