OpenCV 图像像素操作

加载图像与读取基本信息

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容