gpt4 book ai didi

flutter - 在 Flutter 中读取/转换相机流图像

转载 作者:行者123 更新时间:2023-12-03 02:55:54 27 4
gpt4 key购买 nike

在我的 iOS 设备上,我通过 CameraController 访问相机(由 camera 包提供)和 controller.startImageStream((CameraImage img) {...}
来自相机的数据在我的手机上为 bgra8888 格式,但我已经读到它在 android 设备上的 yuv420 格式。要将图像流数据转换为可用的、一致的格式,我正在使用:

import 'dart:typed_data';
import 'package:camera/camera.dart';
import 'package:image/image.dart' as im;

Uint8List concatenatePlanes(List<Plane> planes) {
final WriteBuffer allBytes = WriteBuffer();
planes.forEach((Plane plane) => allBytes.putUint8List(plane.bytes));
return allBytes.done().buffer.asUint8List();
}

List<CameraDescription> cameras = await availableCameras();
CameraController controller = CameraController(cameras[0], ResolutionPreset.medium);

controller.startImageStream((CameraImage img) {
print(img.format.group); // returns ImageFormatGroup.bgra8888

List<int> imgData = concatenatePlanes(img.planes);
im.Image image = im.decodeImage(imgData);
});
imgData变量充满了从相机流出的数据,但转换后的 image从 decodeImage 返回为空。

我在其他帖子上读过 image包将完成解码 bgra8888/yuv420 图像( https://stackoverflow.com/a/57635827/479947 )的任务,但我在它的 format.dart 源( https://github.com/brendan-duncan/image/blob/master/lib/src/formats/formats.dart )中没有看到支持。

目标 Image格式定义为:

An image buffer where pixels are encoded into 32-bit unsigned ints (Uint32). Pixels are stored in 32-bit unsigned integers in #AARRGGBB format. This is to be consistent with the Flutter image data.



如何将 bgra8888/yuv420 中的图像流图像转换为所需的图像格式?

最佳答案

你检查过这个吗? convertImage

如果你从 bgra8888 转换为 Image,它有点快,但 yuv420 到 Image 需要更多的时间,所以如果你有性能问题,我可以用我的经验帮助一点。顺便说一句,如果您有性能问题并尝试使用 Isolate,您将遇到内存问题。

关于flutter - 在 Flutter 中读取/转换相机流图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58848124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com