如何将图像转换为Mat Android

时间:2015-06-16 22:15:14

标签: android image bitmap mat

我需要为我的应用程序处理Image。我得到了ImageReader的图片。

reader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {
            @Override
            public void onImageAvailable(ImageReader reader) {
                Image mImage = reader.acquireNextImage();

                //mImage to Mat here

                mImage.close();
            }
        },null);

但是现在,我需要在Mat中转换这些图像。 我知道我可以通过Bitmap课程,但我也不知道如何将图片转换为Bitmap

2 个答案:

答案 0 :(得分:3)

我认为我找到了可能的答案。 我给ImageReader一个像JPEG这样的简单平面格式。

reader = ImageReader.newInstance(previewSize.getWidth(),previewSize.getHeight(), ImageFormat.JPEG, 2);

然后我这样做:

ByteBuffer bb = image.getPlanes()[0].getBuffer();
    byte[] buf = new byte[bb.remaining()];

    imageGrab = new Mat();
    imageGrab.put(0,0,buf);

答案 1 :(得分:0)

尝试一下

// image to byte array
ByteBuffer bb = image.getPlanes()[0].getBuffer();
byte[] data = new byte[bb.remaining()];
bb.get(data);

// byte array to mat
Mat = Imgcodecs.imdecode(new MatOfByte(data), Imgcodecs.CV_LOAD_IMAGE_UNCHANGED);