如何解决捕获的Android camera2 YUV 2048x1536图像被拉伸不是预览
我正在尝试捕获YUV图像,但是被拉长了。我正在按照https://github.com/googlearchive/android-Camera2Basic使用Android Camera2。 Android SDK是28。
当我使用ImageReader从setonImageAvailableListener()方法中捕获YUV 2048x1536中的摄像机帧时,我面临一种奇怪的行为。捕获范围很广:
我做什么:
pictureImageReader.setonImageAvailableListener(
reader -> {
Image image = reader.acquireLatestimage();
if(image != null){
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes);
Bitmap bitmapImage = BitmapFactory.decodeByteArray(bytes,bytes.length,null);
image.close();
}
},mBackgroundHandler);
要将图像转换为位图,我使用了以下How to convert android.media.Image to bitmap object?:
Image image = reader.acquireLatestimage();
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes);
Bitmap bitmapImage = BitmapFactory.decodeByteArray(bytes,null);
但是,如果我更改分辨率,则捕获效果很好(YUV 960x720):
我不知道为什么扩展YUV 2048x1536中的捕捉而在YUV 960x720中不是吗?唯一的变化是分辨率
谢谢
解决方法
设备是否在其流配置图中将2048x1536实际列出为受支持的大小?有时,摄像头设备会接受它们未列出的分辨率,但无法正确输出。
如果列出了该尺寸,那么很遗憾,这可能只是该设备的相机实现上的错误。
(此外,您似乎正在捕获JPEG图像,而不是未压缩的YUV,但这不一定很重要)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。