Opencv Mat 类 (二)
我有一个梦想,我写的代码,可以像诗一样优美。我有一个梦想,我做的设计,能恰到好处,既不过度,也无不足。
书接上文,我们接着讲起。
Mat类是由两个部分组成,一、矩阵头(包含矩阵尺寸、存储方式、存储地址等相关信息);二、一个指向存储所有像素值的矩阵的指针。
插一句,通常矩阵的数据尺寸要比矩阵头大的多的多,这就会造成一种结果,就是图像Matzai 传递的过程中,开销最大的应该时矩阵的开辟,为了防止产生这种情况,就引出了引用计数这个东西,思想主要为:
对于矩阵数据相同的Mat对象,各个对象拥有各自的信息头,但是共享一个矩阵,让各自的矩阵指针指向同一块内存。
void UseMat2()
{
Mat mat(2, 3, CV_8UC1, Scalar(0));
cout << "mat refcount = " << mat.u->refcount << endl;
cout << "mat = " << endl << mat << endl;
Mat mat1(mat);
cout << "mat refcount = " << mat.u->refcount << endl;
cout << "mat1 refcount = " << mat1.u->refcount << endl;
mat1.at<uc