其他分享
首页 > 其他分享> > 使用android sdk进行人脸识别而不是opencv

使用android sdk进行人脸识别而不是opencv

作者:互联网

我目前正在研究android中的人脸识别.我在网上度过了合理的时间,我在Android中找到了FaceDetector.Face类.这些是这个类的实用程序:

 Constants
 float  CONFIDENCE_THRESHOLD
 int    EULER_X The x-axis Euler angle of a face.
 int    EULER_Y The y-axis Euler angle of a face.
 int    EULER_Z The z-axis Euler angle of a face.

 Public Methods
 float   confidence()
 float   eyesDistance()
 void    getMidPoint(PointF point)
 float   pose(int euler)

问题是,我不知道如何使用这些方法,我找不到任何教程或示例源代码.问题是,我应该使用eyesDistance()来区分人吗?例如,莎拉的眼睛距离= 6.51厘米,约翰的眼睛= 6.82.当代码计算人眼距离时,它是6.82,它是否告诉你“这是约翰”这是识别人的方式吗?或者算法是什么?或者我应该使用EULER常数?以什么方式?我想我将使用这些方法进行人脸识别,但我不知道如何使用它.

或者你能建议另一种面部识别解决方案吗?
任何帮助,将不胜感激.

解决方法:

FaceDetector类没有按照您的想法执行.具体来说,它不进行面部识别,而是进行面部检测(因此是类名).

它分析图像并返回图像中找到的面部.除了他们的眼睛之间的距离之外,它不会区分Faces(你不能分辨它是John’s Face还是Sarah’s Face) – 但这并不是真正有效的比较点.它只是为您提供了找到的面孔以及对象找到的实际面部的置信度.

例如:

int maxNumFaces = 2; // Set this to whatever you want
FaceDetector fd = new FaceDetector(imageWidth,imageHeight,maxNumFaces);
Faces[] faces = new Faces[maxNumFaces];

try {
  int numFacesFound = fd.findFaces(image, faces);

  for (int i = 0; i < maxNumFaces; ++i) {
     Face face = faces[i];
     Log.d("Face " + i + " found with " + face.confidence() + " confidence!");
     Log.d("Face " + i + " eye distance " + face.eyesDistance());
     Log.d("Face " + i + " pose " + face.pose());
     Log.d("Face " + i + " midpoint (between eyes) " + face.getMidPoint());
  }
} catch (IllegalArgumentException e) {
  // From Docs:
  // if the Bitmap dimensions don't match the dimensions defined at initialization 
  // or the given array is not sized equal to the maxFaces value defined at 
  // initialization
}

标签:face-recognition,android
来源: https://codeday.me/bug/20190930/1835719.html