我需要为我的应用程序处理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
。
答案 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);