尝试在Camera.Face类中使用Android 4 API 14面部识别。
我很难获得面部坐标的值[左/右眼,嘴巴]。
使用的设备是使用Android 4.0.4的三星Galaxy Tab 2 [GT-P5100]
我正在初始化面部检测,如下面的代码片段和 camera.getParameters()的值。在上述设备上运行时,getMaxNumDetectedFaces()返回为3。
现在,当面部被引入到表面框架并在面部检测侦听器中检测到时,它将返回 faces [0] .rect.flattenToString()中的值,以识别面部表面的位置。然而,其余的值,即面部id,左/右眼和嘴部分别返回-1和Null。
此行为在documentation中描述为
这是一个可选字段,可能并非所有设备都支持。如果不受支持,则该值将始终设置为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();
}
}
答案 0 :(得分:1)
在初始化代码中,您需要为摄像头设置面部检测侦听器。