使用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