opencv mat的所有成员变量
opencv官方文档中的Mat成员变量
运行以下代码,利用vs分析一个temp
Mat temp = cv::imread("C:/Users/25233/Pictures/IMG_1373 全景.jpg");
vs中查看一个mat包含的成员变量
接下来一个个分析每个变量表示的意思
变量 | 意义 | 类型 |
---|---|---|
flags | 应该是利用一些方法计算这个mat的ID | int |
dims | 维度,常见是二维矩阵 | int |
rows | 行数 | int |
cols | 列数 | int |
data | 指向mat初始地址 ,看着和datastart值一样,不知道有啥区别 | uchar * |
datastart | 指向mat初始地址 | const uchar * |
dataend | 指向mat结束地址 | const uchar * |
datalimit | 指向mat结束地址 | const uchar * |
allocator | 不知道啥玩意 | * |
u | 是一个UMatData * 的指针变量,可以继续取它的成员变量,其中最好用的就是u->size ,代表这个mat的字节大小 | const UMatData * |
size | 看着和行数一样 | cv:: MatSize |
step | 包含两个值,分别是一行占用的字节例如20319*3=60957,表示一行有20319列,每个元素包含BGR 3个uint8的值 | cv:: MatStep |
这里面的成员u引起了我的兴趣,仔细观察,下图是官网文档对 UMatData 的解释,包含了很多成员变量
在vs仔细查看成员u,发现它有个成员变量 uint64 size,代表了这个mat占用的字节大小,这张图片我特意选的比较大,占用了394MB.
下面学以致用,可以很方便的输出一个mat的字节大小。
Mat temp = cv::imread("C:/Users/25233/Pictures/IMG_1373 全景.jpg");
auto size = temp.u->size;
cout << size << endl;