2017-03-07 4 views
0

Android用FaceDetection APIを使用して顔や目を検出するAndroidアプリで作業しています。私は顔の周りに長方形を検出して描くことができますが、なぜ私の目の座標がすべて(0,0)に設定されているのか理解できません。Android用FaceDetectionListenerで目の座標が検出されない理由

documentationを読んでいると、私は目の検出がすべてのデバイスでサポートされていないことを知っていますが、Pointオブジェクトは(0,0)ではなくnullに設定されているため、ここで何が起こっているのか分かりません。

は、ここに私のFaceDetectionListenerです:

目のための私のポイントは、(0,0)に設定されているばかり座標なぜ
private List<Rect> faceRects; 
private Point leftEye; 
private Point rightEye; 

@Override 
public void onFaceDetection(Camera.Face[] faces, Camera camera) { 
    if (faces.length > 0) { 
     faceRects = new ArrayList<Rect>(); 

     for (int i = 0; i < faces.length; i++) { 
      int left = faces[i].rect.left; 
      int right = faces[i].rect.right; 
      int top = faces[i].rect.top; 
      int bottom = faces[i].rect.bottom; 
      Rect uRect = new Rect(left, top, right, bottom); 
      faceRects.add(uRect); 

      leftEye = faces[i].leftEye; //***THIS IS (0,0) EVEN WHEN FACE IS DETECTED 
      rightEye = faces[i].rightEye; 
     } 
    } 
} 

。私はGalaxy S7でテストしています。私はそれが目の検出をサポートしていないと信じるのは難しいと思っています。私はOpenCVを使用してこの問題の解決策を公開していますが、私はすでに顔を検出できるので(おそらく)、Android SDKを使用したいと思います。助けてくれてありがとう。

答えて

1

すべてのデバイスがすべての顔機能をサポートしているわけではありません。左眼用のためdocumentation状態として

や他の分野の最も:

これはオプションのフィールドで、すべてのデバイスでサポートされないかもしれません。サポートされていない場合、値は常にnullに設定されます。オプションフィールドはセットとしてサポートされています。どちらも有効ですが、どちらも有効ではありません。

顔検出がデバイスでサポートされている場合、Face.rectフィールドとFace.scoreフィールドのみが含まれることが保証されています。

+0

"すべてのデバイスでサポートされていない可能性があります"は非常に曖昧です。サポートされているデバイスの一覧はありますか? – LaneL

+1

私は気づいていません。 Camera2 APIにはhttps://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODESの明示的なリストがありますが、カメラ2のハードウェアレベルがLIMITED以上の場合、Camera1 APIのみにマップされます。古いカメラAPIにオプションのフィールドが設定されていても、LEGACYレベルはFACE_DETECT_MODE_FULLに決して表示されません。 –

関連する問題