我试图运行人脸识别,并且需要来自相机的图像/文件流。
我决定使用Flutters自己的相机库camera: 0.2.9+1
。CameraController.startImageStream(Function(CameraImage) onAvailable)
方法很有希望,但我不知道如何将CameraImage
数据转换为可识别的面部识别数据。
还有其他人解决吗?
最佳答案
CameraImage
通常为YUV 420格式。 (测试cameraImage.format.group
进行确认。)
这与Firebase ML很好地配合,因为它是预期的格式。有用的演示here。但是,其他识别器可能需要其他格式(例如,AWS需要JPEG或PNG)。
YUV使用色度二次采样很难转换。另外,为了提高性能,您可能希望使用本机代码。在Android上,有一个YUVImage类,您可以在其中传递飞机。它具有一种转换为JPEG的方法。创建一个插件或方法通道,以将平面传递到YUVImage,让其保存到ByteArrayOutputStream并返回字节。