尝试使用 Camera.Face 类中的 Android 4 API 14 人脸识别。
我很难获取面部坐标 [左/右眼、嘴巴] 的值。
我使用的设备是三星 Galaxy Tab 2 [GT-P5100] 与 Android 4.0.4
我正在初始化面部检测,类似于下面的代码片段,并且在上述设备上运行时, camera.getParameters().getMaxNumDetectedFaces()的值返回为 3。
现在,当人脸被引入到表面框架并在人脸检测侦听器中检测到时,它会返回faces[0].rect.flattenToString()中的值来识别人脸在表面上的位置。然而,其余的值,即面部 ID、左/右眼和嘴巴分别返回为 -1 和 Null。
此行为在文档中描述为
这是一个可选字段,可能并非所有设备都支持。如果不支持,该值将始终设置为 null。可选字段被支持为一组。它们要么都是有效的,要么都不是。
所以问题是我是否遗漏了什么,或者仅仅是我的设备不支持在 Camera.Face 中找到的 Android api 人脸识别?
值得一提的是,同一设备提供人脸登录设备,这是通过用户设置进行配置的。
FaceDetectionListener faceDetectionListener = new FaceDetectionListener(){
@Override
public void onFaceDetection(Face[] faces, Camera camera) {
if (faces.length == 0){
prompt.setText(" No Face Detected! ");
}else{
prompt.setText(String.valueOf(faces.length) + " Face Detected :) [ "
+ faces[0].rect.flattenToString()
+ "Coordinates : Left Eye - " + faces[0].leftEye + "]"
) ;
Log.i("TEST", "face coordinates = Rect :" + faces[0].rect.flattenToString());
Log.i("TEST", "face coordinates = Left eye : " + String.valueOf(faces[0].leftEye));
Log.i("TEST", "face coordinates = Right eye - " + String.valueOf(faces[0].rightEye));
Log.i("TEST", "face coordinates = Mouth - " + String.valueOf(faces[0].mouth));
}
......
if (camera != null){
try {
camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();
prompt.setText(String.valueOf(
"Max Face: " + camera.getParameters().getMaxNumDetectedFaces()));
camera.startFaceDetection();
previewing = true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}