MLKit人脸检测为图像提供了无效的图像数据大小

时间:2019-09-12 09:53:47

标签: android android-camera face-detection firebase-mlkit

嗨,我正在使用Firebase MLKit和camera 1资源。处理从相机捕获的图像数据时遇到问题。我的代码如下:

@Override
public void onPictureTaken(byte[] data, Camera camera) {

  FirebaseVisionFaceDetectorOptions options = new FirebaseVisionFaceDetectorOptions.Builder()
          .setPerformanceMode(FirebaseVisionFaceDetectorOptions.FAST)
          .setLandmarkMode(FirebaseVisionFaceDetectorOptions.ALL_LANDMARKS)
          .build();

  FirebaseVisionFaceDetector detector = FirebaseVision.getInstance().getVisionFaceDetector(options);
  int height = camera.getParameters().getPreviewSize().height;
  int width = camera.getParameters().getPreviewSize().width;
  FirebaseVisionImageMetadata metadata = new FirebaseVisionImageMetadata.Builder()
          .setFormat(FirebaseVisionImageMetadata.IMAGE_FORMAT_NV21)
          .setWidth(width)
          .setHeight(height)
          .setRotation(3)
          .build();

  FirebaseVisionImage firebaseVisionImage = FirebaseVisionImage.fromByteArray(data, metadata);

  detector.detectInImage(firebaseVisionImage).addOnSuccessListener(new OnSuccessListener<List<FirebaseVisionFace>>() {
    @Override
    public void onSuccess(List<FirebaseVisionFace> firebaseVisionFaces) {
    }
  }).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception e) {
    }
  });
}

我遇到了致命的异常:

java.lang.IllegalArgumentException: Invalid image data size.
        at com.google.android.gms.vision.Frame$Builder.setImageData(Unknown Source)
        at com.google.firebase.ml.vision.common.FirebaseVisionImage.zzb(com.google.firebase:firebase-ml-vision@@22.0.0:145)
        at com.google.android.gms.internal.firebase_ml.zzqp.zza(com.google.firebase:firebase-ml-vision@@22.0.0:11)
        at com.google.firebase.ml.vision.face.FirebaseVisionFaceDetector.detectInImage(com.google.firebase:firebase-ml-vision@@22.0.0:25)

以上问题仅在某些设备上发生。对于少数设备,它运行正常,但对于某些设备,则出现上述错误。另外,如果我从相同的字节数组创建位图,并将其传递给FirebaseVisionFaceDetector,则效果很好。但是问题在于它会使过程变慢。

0 个答案:

没有答案