You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用google_ml_kit:^0.16.3的Flutter人脸检测报错修复求助

解决google_ml_kit 0.16.3版本人脸检测代码报错问题

报错原因及对应修正方案

  • InputImageRotationMethods/InputImageFormatMethods未定义:0.16.x版本移除了这两个工具类,直接使用InputImageRotation.fromRawValue()和InputImageFormat.fromRawValue()方法替代。
  • InputImagePlaneMetadata/InputImageData无此方法:旧版本的InputImageData在0.16.x中重命名为InputImageMetadata,确保正确导入google_ml_kit相关类即可。
  • InputImage.fromBytes缺少必填参数metadata:该方法参数已从inputImageData改为metadata,需传入InputImageMetadata类型对象。

修正后的_processCameraImage代码

import 'package:google_ml_kit/google_ml_kit.dart';
import 'dart:typed_data';
import 'dart:ui';
import 'package:camera/camera.dart';

Future<void> _processCameraImage(CameraImage image) async {
  final WriteBuffer allBytes = WriteBuffer();
  for (Plane plane in image.planes) {
    allBytes.putUint8List(plane.bytes);
  }
  final Uint8List bytes = allBytes.done().buffer.asUint8List();

  final Size imageSize = Size(image.width.toDouble(), image.height.toDouble());

  // 替换旧工具类为InputImageRotation.fromRawValue
  final InputImageRotation imageRotation = InputImageRotation.fromRawValue(
          _cameraController!.description.sensorOrientation) ??
      InputImageRotation.rotation0deg;

  // 替换旧工具类为InputImageFormat.fromRawValue
  final InputImageFormat inputImageFormat = InputImageFormat.fromRawValue(image.format.raw) ??
      InputImageFormat.nv21;

  // 构造InputImagePlaneMetadata列表
  final List<InputImagePlaneMetadata> planeData = image.planes.map(
    (Plane plane) {
      return InputImagePlaneMetadata(
        bytesPerRow: plane.bytesPerRow,
        height: plane.height,
        width: plane.width,
      );
    },
  ).toList();

  // 使用新版本的InputImageMetadata替代旧的InputImageData
  final InputImageMetadata inputImageMetadata = InputImageMetadata(
    size: imageSize,
    rotation: imageRotation,
    format: inputImageFormat,
    planeData: planeData,
  );

  // 传入metadata参数构建InputImage
  final InputImage inputImage = InputImage.fromBytes(
    bytes: bytes,
    metadata: inputImageMetadata,
  );

  _detectFaces(inputImage);
}

额外注意事项

  • 确保_cameraController已完成初始化并获取到有效相机实例。
  • 确认_detectFaces方法已正确实现,能够接收InputImage参数并执行人脸检测逻辑。

内容的提问来源于stack exchange,提问作者Aymen Boureghda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:55:14