2012-04-01 76 views
8

因此,我使用内置facedector的androids来检测和确定位图中位置的位置。现在它可以工作,并告诉我:自信,eyesDistance和中点,但每当我尝试获得姿势它总是返回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 2012-04-03 01:04:00

+0

当然抱歉我现在将它添加 – Peter 2012-04-03 01:08:22

+0

检查此代码,因为它为我和其他人工作http://stackoverflow.com/questions/9269891/android-face-detection/9272063#9272063 – Sameer 2012-04-07 11:13:03

回答

3

粗略谷歌搜索显示约10个不同的岗位 - 有些甚至on StackOverflow - 有同样问题的人。你有没有找到这些?它看起来可能是一个错误。我建议你将它报告给android bug tracker

编辑:您应该绝对提交错误。看看脸部检测源代码:this source file表明,Android将永远不会将这些设置为除0之外的任何内容。

在此更改之前,Android还有其他CV选项。退房OpenCV for Android,现在正式由团队支持。

+0

谢谢我将研究这个问题,之前我已经研究过Android的OpenCV,但是我永远无法设置它并且实际工作,你知道任何好的资源吗? – Peter 2012-04-03 01:22:25

+0

您使用的是Eclipse吗?如果你是,你有没有尝试一步一步的指导,我链接你提供的网站? – sastraxi 2012-04-03 02:18:01

+0

是的,但是我发现他们的网站已经改变了,看起来自从我上次试图让它工作以来,它的更新已经更新。我仍然希望使用android facedetect来处理'pose',因为我已经可以使用所有其他代码了。但我肯定会考虑未来的OpenCV。 – Peter 2012-04-03 14:23:53