【发布时间】:2017-01-20 22:49:44
【问题描述】:
我正在尝试将 Google Mobile Vision API 与 camera2 模块一起使用,但遇到了很多麻烦。
我使用 Google 的 android-Camera2Video 示例代码作为基础。我已对其进行了修改以包含以下回调:
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 只接受 Bitmap 图像,但我无法将 YUV_420_888 转换为位图。相反,我将imageReader 的文件格式更改为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 的帧率下降很明显。我想知道是否有人以前解决过这个问题。
【问题讨论】:
-
您的代码帮助我解决了原本无法解决的问题。谢谢你:)
标签: java android bitmap google-vision