图片是以数组的方式存在设备中的,数组中的值代表某个像素点的像素值,它的格式和范围受 颜色空间 和 数据类型 的影响。
Mat类
基础图像容器,代表的是矩阵(Matrix)前三个字母,它其实就是一个可以保存图片(一些数组矩阵)或者数组的容器,在opencv开发中我们经常需要使用它存储显示并传递一些数据,Mat类有相关的成员变量和成员函数方便使用。
特点:1.不必为它手动开辟空间 2.不必在不需要的时候立即释放空间 3.Mat由两部分组成,矩阵头(矩阵尺寸,存储方法,存储地址等信息)和一个指针(指向存储所有像素值的矩阵)。
图像信息
Mat类最基本的有长、宽、像素类型(矩阵类型)、像素深度(矩阵元素的深度)、通道数等信息。
成员变量 | 意义 |
---|---|
rows | 图像的行数,也就是图像的高度 height |
cols | 图像的列数,也就是图像的宽度 width |
Opencv通道数:int Mat::channels() const
返回图像的通道数:灰度图为1,彩色图为3。
OpenCV像素深度:int Mat::depth() const
返回矩阵元素深度的标识符(每个单独通道的类型)
矩阵类型包含以下值:
- CV_8U - 8位无符号整数(0…255)
- CV_8S - 8位有符号整数(-128…127)
- CV_16U - 16位无符号整数(0…65535)
- CV_16S - 16位有符号整数(-32768…32767)
- CV_32S - 32位有符号整数(-2147483648…2147483647)
- CV_32F - 32位浮点数(-FLT_MAX…FLT_MAX,INF,NAN)
- CV_64F - 64位浮点数(-DBL_MAX…DBL_MAX,INF,NAN)
OpenCV像素类型:int Mat::type() const
返回矩阵元素类型
类型与深度主要差别在于类型有通道数信息,比如
CV_8UC3 -代表8位不带符号的3通道阵列。
- CV_8U -位元深度为8,无负号,通道数1
- CV_8S -位元深度为8,有负号,通道数1
- CV_16U -位元深度为16,无负号,通道数1
- CV_32F -浮点数资料,通道数1
- CV_8U