Mat类
Mat类由矩阵头(包含矩阵尺寸、存储方法、存储地址等信息)和一个指向存储像素值的矩阵的指针。矩阵头尺寸是一个常数值。
Mat类使用引用计数机制,赋值一个Mat对象的信息头时,会增加矩阵的引用计数。当引用计数值为零时矩阵会被清理。
如果想复制矩阵本身,则可以使用clone()或者copyTo()函数。
void cv::Mat::copyTo(OutputArray m) const
调用copyTo函数时,会默认先自动调用m.create(this->size(),this->type());
void cv::Mat::copyTo(OutputArray m,InputArray mask ) const
mask of the same size as *this. Its non-zero elements indicate which matrix elements need to be copied. The mask has to be of type CV_8U and can have 1 or multiple channels.
int main() { Mat A, C; A = imread("1.jpg", IMREAD_COLOR); Mat B(A); //拷贝构造函数,只复制信息头和矩阵指针,不复制矩阵 C = A; //赋值运算符,只复制信息头和矩阵指针,不复制矩阵 Mat D(A, Rect(10, 10, 100, 100)); //创建ROI,使用矩形界定 Mat E = A(Range::all(), Range(1, 3)); //使用行列界定 Mat F = A.clone(); //复制矩阵 Mat G; A.copyTo(G); //复制矩阵 waitKey(0); return 0; }