如何将图像转换为 Mat Android

How to convert an Image to Mat Android

我需要为我的应用程序处理图像。我得到 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 class,但我也不知道如何将图像转换为 Bitmap

我想我找到了可能的答案。 我为我的 ImageReader 提供了一种简单的平面格式,例如 JPEG。

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

然后我这样做:

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

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

试试这个

// 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);