加载图像与读取基本信息
Mat对象中除来存储图像的像素数据以外,还包括图像的其他属性,具体为宽、高、类型、通道、大小、深度等,当你需要这些信息时,可以通过相关API来获取这些基本图像属性。
public int channels() 返回通道数
public int cols() 返回矩阵的列数(宽度)
public int rows() 返回矩阵的行数(高度)
public int dims() 返回矩阵的维度
public int tyep() 返回矩阵的类型
在获取图像数据的时候,如果mat 的类型与通道数目重要,根据mat 的类型与通道数目,开辟适当大小的内存空间,然后通过get方法就可以实现对每个像素点值的读取、修改,然后通过put方法修改与mat对应的数据部分
通道表示每个点能放多少个数,如RGB彩色图中的每个像素点有三个值,即三通道的;
常见的通道数据有
1:灰色单通道
3: RGB
4: RGBA带alpha
图像的深度表示每个值由多少位来存储,是一个精度问题,一般图片是8bit位的,则深度8
单通道 | 双通道 | 三通道 | 四通道 |
---|---|---|---|
CV_8UC1 | CV_8UC2 | CV_8UC3 | CV_8UC4 |
CV_8SC1 | CV_8SC2 | CV_8SC3 | CV_8SC4 |
CV_16UC1 | CV_16UC2 | CV_16UC3 | CV_16UC4 |
CV_16SC1 | CV_16SC2 | CV_16SC3 | CV_16SC4 |
CV_32SC1 | CV_32SC2 | CV_32SC3 | CV_32SC4 |
CV_32FC1 | CV_32FC2 | CV_32FC3 | CV_32FC4 |
CV_64FC1 | CV_64FC2 | CV_64FC3 | CV_64FC4 |
图像深度 | Java对应数据类型 |
---|---|
CV_8U | 8位byte |
CV_8S | 8位byte |
CV_16U | 16位char |
CV_16S | 16位char |
CV_32S | 32位int |
CV_32F | 32位float |
CV_64F | 64位double |
U表示无符号整型,S整型,F浮点型
cv::imread 默认记载的通道顺序是BGR
Utils.bitmapToMat加载的图像顺序是BGRA
读取像素数据,修改,写入
方法 | 支持类型 |
---|---|
double[] ge(int row, int col) | 以下全部 |
int get(int row ,int col ,double[] data) | CV_64FC1 |
CV_16U | 16位char |
CV_16S | 16位char |
CV_32S | 32位int |
CV_32F | 32位float |
CV_64F | 64位double |