2012-04-01 5 views
8

facedectorに組み込まれたアンドロイドを使用して、ビットマップ内の顔の位置を検出して判定しています。今、それは動作し、私に言うだろう:confidence、eyesDistanceとmidpointしかし、私はポーズを取得しようとするたびに、私は何を使用しようと画像に関係なく常に0を返します。Android Facedetectorのポーズ値は常に0です

これは私がポーズを取得するために使用したコードです:

poseString = "Pose: (" + getFace.pose(FaceDetector.Face.EULER_X) + "," 
         + getFace.pose(FaceDetector.Face.EULER_Y) + "," 
         + getFace.pose(FaceDetector.Face.EULER_Z) + ")"; 

そして、ここで私が使用するコードです:

arrayFaces = new FaceDetector(picWidth, picHeight, NUM_FACES); 
     arrayFaces.findFaces(sourceImage, getAllFaces); 

     for (int i = 0; i < getAllFaces.length; i++) { 
      getFace = getAllFaces[i]; 
      try { 
       PointF eyesMP = new PointF(); 
       getFace.getMidPoint(eyesMP); 
       poseString = "Pose: ("+ getFace.pose(FaceDetector.Face.EULER_X) + "," 
         + getFace.pose(FaceDetector.Face.EULER_Y) + "," 
         + getFace.pose(FaceDetector.Face.EULER_Z) + ")"; 
       EULER_X = getFace.EULER_X; 
       EULER_Y = getFace.EULER_Y; 
       EULER_Z = getFace.EULER_Z;  

       eyesDistance[i] = getFace.eyesDistance(); 
       eyesMidPts[i] = eyesMP; 

       if (DEBUG) { 
        currentx = eyesMidPts[i].x; 
        currenty = eyesMidPts[i].y; 
        betweeneyes = getFace.eyesDistance(); 

        Log.d("currentx", currentx + ""); 
        Log.d("currenty", currenty + ""); 
        Log.d("betweeneyes", betweeneyes + ""); 
        Log.d("EULER", "EULER_X: " + EULER_X + "EULER_Y: " + EULER_Y + "EULER_Z: " + EULER_Z); 

        Log.i("Face", i + " " + getFace.confidence() + " " 
          + getFace.eyesDistance() + " " + "Pose: (" 
          + getFace.pose(FaceDetector.Face.EULER_X) + "," 
          + getFace.pose(FaceDetector.Face.EULER_Y) + "," 
          + getFace.pose(FaceDetector.Face.EULER_Z) + ")" 
          + "Eyes Midpoint: (" + eyesMidPts[i].x + "," 
          + eyesMidPts[i].y + ")"); 
       } 
      } catch (Exception e) { 
       if (DEBUG) 
        Log.e("Face", i + " is null"); 
      } 




     } 
+0

「FaceDetector」を実際に使用しているコードを確認できますか?私がドキュメントから知ることができる限り、あなた自身の 'Face []'配列を渡してから、それらのオブジェクトから直接読むべきです。 – sastraxi

+0

申し訳ありません今すぐ追加します – Peter

+0

このコードをチェックすると、他の人にも役立ちますhttp://stackoverflow.com/questions/9269891/android-face-detection/9272063#9272063 – Sameer

答えて

3

一遍のGoogle検索を約10種類のポストを示して - さらにいくつかは、 on StackOverflow - 同じ問題の人。これらは見つかりましたか?それはバグかもしれないようです。 android bug trackerに報告することをお勧めします。

編集:間違いなくにバグを報告する必要があります。顔検出のソースコードを見てみましょう:this source fileは、Androidが0以外のものにこれらを設定しないことを示しています。

これまでAndroid用のCVオプションがあります。チームによって正式にサポートされているOpenCV for Androidをチェックしてください。

+0

これまで見ていただきありがとうございます。私はAndroidのOpenCVを見ていましたが、設定して実際に作業することはできませんでした。 – Peter

+0

Eclipseを使用していますか?もし私がリンクしているウェブサイトが提供するステップバイステップガイドを試してみましたか? – sastraxi

+0

はい、私は、私は彼らのウェブサイトが変更されていると私はそれを働かせようとした最後の時間以来、更新されたように見えます。私はまだ他のコードがすべて動作しているので、アンドロイドのfacedetectで動作する 'pose'を取得したいと思います。しかし、私は間違いなくOpenCVを将来について検討します。 – Peter

関連する問題