2012-04-01 35 views
8

Yani bitmap'te yüzlerin konumunu algılamak ve belirlemek için facedector dahili android'leri kullanıyorum. Şu anda çalışıyor ve bana söyleyecek: güven, gözlerDurum ve orta nokta ama poz almaya çalışırken her zaman hangi görüntüleri kullanmayı deneyin olursa olsun 0 döndürür. Android Facedetector poz değerleri her zaman 0

Bu

ben poz almak için kullandığınız koddur: Burada

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

Ve kod kullandığım edilir:

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

Gerçekte 'FaceDetector' kullandığınız kodu görebilir miyiz? Dokümanlardan anlayabildiğim kadarıyla, kendi 'Face []' dizisinden geçmeli ve sonra doğrudan bu nesnelerden okuyor olmalısınız. – sastraxi

+0

Üzgünüm, şimdi ekleyeceğim – Peter

+0

bana ve diğer insanlara çalıştığınız için bu kodu kontrol edin http://stackoverflow.com/questions/9269891/android-face-detection/9272063#9272063 – Sameer

cevap

3

üstünkörü google arama yaklaşık 10 farklı yayınları gösterir - hatta bazıları on StackOverflow - aynı sorunu olan insanlar. Bunları buldunuz mu? Bir hata olabilir gibi görünüyor. Bunu android bug tracker'a bildirmenizi öneririm.

Düzenleme:kesinlikle bir hata dosyası oluşturmalısınız. Yüz algılama kaynak koduna bir göz atın: this source file, Android'in bunları hiçbir zaman ayarlamayacağını gösterir. 0

Bu değişikliklere kadar Android için başka CV seçenekleri de vardır. Şimdi takım tarafından resmi olarak desteklenen OpenCV for Android'a bakın.

+0

Buna dikkat edeceğim, daha önce Android için OpenCV'yi inceledim, ancak kurulumunu yapamadım ve aslında işe yaramadı, herhangi bir iyi kaynak olduğunu biliyor musunuz? – Peter

+0

Eclipse kullanıyor musunuz? Eğer öyleyseniz, sizi bağladığım web sitesinin sağladığı adım adım kılavuzu denediniz mi? – sastraxi

+0

Evet, ama web sitelerinin değiştiğini ve çalışmayı denediğimden beri güncellendiğini görüyorum. Halen çalışmakta olan diğer kodların hepsine sahip olduğumdan, hala android facedetect ile çalışan “poz” u almak isterim. Ama ben kesinlikle gelecek için OpenCV'ye bakacağım. – Peter

İlgili konular