Bitmap与Mat对象
Bitmap对象是安卓sdk里的一个对象,它与Mat对象相似,也存储图像的场景属性,像素数据等
Bitmap对象的创建
一般来说,我们从安卓的Resource里加载一个图片,初始化Bitmap
Bitmap bm = BitmapFactory.decodeResource(this.getResources(),R.drawable.a1);
直接创建Bitmap对象:
Bitmap bmp = Bitmap.createBitmap(500,500, Bitmap.Config.ARGB_8888);
默认情况下,Bitmap是在ARGB色彩空间。其中A表示透明通道,R、G、B分别代表红绿蓝颜色通道。
下面具体来介绍下Bitmap对象
获取图像宽度、高度与配置信息
public final int getWidth()
public final int getHeight()
public final Config getConfig()
其中:配置信息Config:
- Bitmap.Config.ALPHA_8 : 只有透明通道,没有颜色
- Bitmap.Config.ARGB_4444 : 每个通道占四位,总计两个字节 表示一个像素的图像
- Bitmap.Config.ARGB_8888 : 每个通道占八位,总计四个字节 (常用)
- Bitmap.Config.ARGB_565 : 表示每个通道分别占5位、6位、5位
Bitmap转Mat
Utils.bitmapToMat(bitmap, mat);
不过这样出来的色彩空间是8UC4的
如果使用OpenCV的cvtColor方法 可以转换成BGR
Imgproc.cvtColor(m,m,Imgproc.COLOR_RGBA2BGR);
Mat转Bitmap
//mat 是要被转换的Mat对象
Imgproc.cvtColor(mat,mat,Imgproc.COLOR_BGR2RGBA);//转换色彩空间
//创建Bitmap对象
Bitmap bmp = Bitmap.createBitmap(mat.width(),mat.height(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(mat,bmp);//转换