OpenCV基本数据结构

Mat类的结构

Mat类由两个部分组成,一个是矩阵头(包含矩阵尺寸、存储方法、存储地址等),另一个是指向所有像素的矩阵的指针。矩阵头的尺寸是常数值,矩阵本身的尺寸会因图像大小不同而不同,一般大的开销都在矩阵上面,矩阵头的开销很小。因此,当在程序中创建副本的时候,大的开销都是矩阵而不是矩阵头。

为了解决这个问题,OpenCV采用计数机制,指的是每一个副本都有自己的矩阵头,但是它们指向同一个矩阵。它通过矩阵头中的指针指向同一块地址实现,拷贝构造函数只复制矩阵头,不复制整个矩阵。

一般Mat类的赋值和拷贝,实际上只是操作了它的矩阵头,所以很多矩阵ABC可能都指向同一个数据矩阵。当你操作A时,BC也会发生相应的改变。但是有些情况下,如果你想复制整个矩阵本身的时候,可以使用clone()copyTo()

OpenCV常用数据结构

1. 表示点的Point

2. 表示颜色的Scalar

Scalar()表示具有4个元素的数组,在OpenCV中被用来传递像素值,如果不使用第四个参数,则不需要写出来。需要注意的是,OpenCV中颜色值是BGR排列而不是传统上的RGB排列。

3. 表示尺寸的Size

4. 矩形类Rect

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值