使用ImageStream时无法在CameraController中获取bgra8888格式

问题描述 投票:0回答:1

我正在使用 startImageStream 逐帧获取,但我想避免使用 C++ 代码(使用 ffi)将 YUV420 转换为 RGB,这会增加大量开销。因此我在实例化控制器时使用了 imageFormatGroup (link)。

ImageFormatGroup 描述了原始图像格式的输出(链接):

cameraController = CameraController(cameras[0],
                                    ResolutionPreset.medium,
                                    imageFormatGroup: ImageFormatGroup.bgra8888);

但我仍然不断获得 yuv420 格式,尽管我已经通过了 ImageFormatGroup.bgra8888 (我使用的是安卓)。

根据这个wiki - RGBA8888我应该得到三个精确尺寸的平面, 但我不断得到:

plane0.bytes.length - 368592

plane1.bytes.length - 184271

plane2.bytes.length - 184271

最终我想将帧从 flutter 传递到 C++,以便使用 OpenCV 处理 RGB 图像。

我也尝试过ImageFormatGroup.jpeg,它拥有一个平面。

有人可以建议一种使用方法吗

CameraController.startImageStream(...)

“开箱即用”RGB 格式的帧?

flutter android-camera ffi
1个回答
0
投票

Flutter相机在IOS平台仅支持BGRA8888。在 Android 上它支持 yuv420 和 JPEG。默认图像格式是 yuv420,这就是为什么当您将图像类型定义为 BGRA8888 时,您会获得 yuv420 中的图像流。

我迟到了,但我希望它能消除其他人的疑虑。

© www.soinside.com 2019 - 2024. All rights reserved.