2017-10-28 128 views
1

我试图检测和裁剪使用 com.google.android.gms.vision.face.FaceDetector类的面部的图像,不一致图片尺寸检测方法

的facedetector对象是作为创建,

detector = new FaceDetector.Builder(context) 
      .setClassificationType(FaceDetector.FAST_MODE) 
      .setProminentFaceOnly(true) 
      .setTrackingEnabled(true) 
      .build(); 


detector.setProcessor(
      new MultiProcessor.Builder<>(new GraphicFaceTrackerFactory()) 
        .build()); 

相机源与Camera2阿比如创建,

mCameraSource = new CameraSource.Builder(context, detector) 
       .setFacing(CameraSource.CAMERA_FACING_FRONT) 
       .setRequestedFps(15.0f) 
       .build(); 

然后在一个按钮点击CameraSou的takePicture方法RCE被调用来处理图像的,

mCameraSource.takePicture(null, new CameraSource.PictureCallback(){ 

      @Override 
      public void onPictureTaken(byte[] bytes) { 
       BitmapFactory.Options options = new BitmapFactory.Options(); 
       Bitmap temp = BitmapFactory.decodeByteArray(bytes, 0, 
         bytes.length, options); 
       Frame frame = new Frame.Builder().setBitmap(temp).build(); 
       SparseArray<Face> faces =detector.detect(frame); 
       System.out.println("faces: "+faces.size()); 

      } 
     }); 

但我收到以下错误,

inconsistent image dimensions 

Native face detection failed 

java.lang.RuntimeException: Error detecting faces. 

com.google.android.gms.vision.face.NativeFaceDetectorImpl.detectFacesJni(Native Method) 
    at com.google.android.gms.vision.face.FaceDetector.detect(Unknown Source:41) 

回答

0

最后我得到它的工作,从文件中识别脸部,

解决方案是使用设置创建探测器对象, trackingEnabled - > false,并且如果要跟踪多个面,setProminentFaceOnly-> false。

启用跟踪功能后,检测器可以很好地与关联的相机预览配合使用来跟踪带有ID的人脸。将发布此解决方案背后原因的详细说明,例如创建探测器对象为:

detector = new FaceDetector.Builder(context) 
      .setClassificationType(FaceDetector.FAST_MODE) 
      .setProminentFaceOnly(false) // <-- set to false 
      .setTrackingEnabled(false) // <-- set to false 
      .build();