Opencv学习笔记-----理解Mat

一、Mat基础
        1、在计算机内存中,数字图像是采用矩阵的方式保存的。Opencv2中,保存图像像素信息的是数据结构Mat阵,它包含两部分:矩阵头和一个指向像素数据的矩阵针。 矩阵头主要包含: 矩阵尺寸、存储方式、存储地址、引用计数 等。矩阵头的大小是一定的,不会随着图像的大小改变而改变,通常图像像素数据都会很大。因此,在图像的复制和传递过程中不需要复制整个Mat数据,只复制矩阵头和指向像素矩阵的指针即可。         
         2、由此会出现多个Mat共用一个矩阵数据的情况,那么内存回收的时候会存在什么时候释放矩阵数据的问题,对于释放内存的时候引用计数就会起作用了,当Mat对象被复制一次时,引用计数会加一,而销毁一个Mat对象(共用同一个图像矩阵数据)时引用计数减一,当引用计数为0的时候,矩阵数据就会被除。
       3、在使用Mat的时候:
        a、OpenCV中内存通常是自动分配,特殊情况需要特别指定。
        b、使用OpenCV的C++接口时不用考虑内存释放问题。
        c、需要复制矩阵数据,可以使用 Image.clone() Image1.copyTo(Image2)

二、Mat存储方法
         Mat矩阵中不同的每个元素可以使用不同数据类型,最小的数据类型是char型,占用一个字节(1byte=8bits),可以是有符号(0到255)和无符号(-127到127)的。在RGB颜色空间中,使用三个char型可以表示1600万种颜色.在Opencv中可以使用 cv::Scalar(b,g,r) 或者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值