OpenCV之数据结构

Mat数据结构

Ipl(这里的l是小写的L,其他都是大写的i)Image*  OpenCV1.X时代的基于C语言接口的图像存储格式。退出前需要释放内存,否则会导致内存泄漏。

        Mat OpenCV2.X时代之后,引入新的C++接口Mat类

        IplImage *img = cvLoadImage(...);

Mat mat(img); //这里可以直接转换IplImage到Mat


关于Mat类

(1)不特别指定的情况下,内存空间根据数据的大小自动改变,保证了内存利用率。

(2)不必再离开时释放内存空间

Mat是一个类,由两部分组成:信息头和一个指向存储像素矩阵的数据指针。

OpenCV使用了引用计数机制,让每个Mat对象拥有自己的信息头,共享同一个数据矩阵。虽然它们的信息头不一样,但是通过任何一个对象所做的改变也会影响其他对象。

Mat A,B;

A = imread(...);

B = A;

Mat C(A);

每次引用都会增加矩阵数据的引用次数。每个Mat对象拥有自己的信息头,共享同一个数据矩阵。

另外,复制矩阵数据也有方法:

①Mat D = A.clone();

②Mat E; A.copyTo(E);

此时改变D、E的数据,不会影响A中的数据

其他常用数据结构

Point类 二维坐标点

Scalar类 表示具有4个元素的数组,常用于传递像素值,如RGB颜色值。

Scalar(b,g,r)

Size类 表示尺寸

Rect类 表示矩形



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑吧小考拉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值