如何将图像转换为 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);
我需要为我的应用程序处理图像。我得到 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);