Я пытаюсь использовать Google Mobile Vision API с модулем camera2, и у меня много проблем.camera2 output to Bitmap
Я использую код примера android-Camera2Video Google в качестве базы. Я изменил его, чтобы включить следующую функцию обратного вызова:
Camera2VideoFragment.java
OnCameraImageAvailable mCameraImageCallback;
public interface OnCameraImageAvailable {
void onCameraImageAvailable(Image image);
}
ImageReader.OnImageAvailableListener mImageAvailable = new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
Image image = reader.acquireLatestImage();
if (image == null)
return;
mCameraImageCallback.onCameraImageAvailable(image);
image.close();
}
};
Таким образом, любой фрагмент, включающий Camera2VideoFragment.java
может получить доступ к своим изображениям.
Теперь API-интерфейс Barcode принимает только изображения Bitmap
, но я не могу преобразовать YUV_420_888
в Bitmap. Вместо этого я изменил Формат файла imageReader
«s к JPEG
и побежал следующий код преобразования:
Image.Plane[] planes = image.getPlanes();
ByteBuffer buffer = planes[0].getBuffer();
buffer.rewind();
byte[] data = new byte[buffer.capacity()];
buffer.get(data);
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
Это работало, но падение частоты кадров кормления JPEG
данных в imageReader
был значительным. Мне интересно, если кто-то работал над этой проблемой раньше.