OpenCV-Android教程-Bitmap与Mat对象

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);//转换
发布了29 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_18604209/article/details/104044374