我正在使用https://github.com/googlesamples/android-Camera2Basic。
我将人脸识别模式设置为FULL。
´mPreviewRequestBuilder.set(CaptureRequest.STATISTICS_FACE_DETECT_MODE,
CameraMetadata.STATISTICS_FACE_DETECT_MODE_FULL);
我的CaptureCallback:
private CameraCaptureSession.CaptureCallback mCaptureCallback
= new CameraCaptureSession.CaptureCallback() {
private void process(CaptureResult result) {
Integer mode = result.get(CaptureResult.STATISTICS_FACE_DETECT_MODE);
Face [] faces = result.get(CaptureResult.STATISTICS_FACES);
if(faces != null && mode != null)
Log.e("tag", "faces : " + faces.length + " , mode : " + mode );
}
@Override
public void onCaptureProgressed(CameraCaptureSession session, CaptureRequest request,
CaptureResult partialResult) {
process(partialResult);
}
@Override
public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request,
TotalCaptureResult result) {
process(result);
}
Output: faces : 0 , mode : 2
面孔的长度始终为0。看起来它无法正确识别面孔,或者我错过了一些东西。
您应该使用以下方法阅读设备可用的面部检测模式:
CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
for (String cameraId : manager.getCameraIdList()) {
CameraCharacteristics characteristics
= manager.getCameraCharacteristics(cameraId);
int[] faceDetectModes = characteristics.get(CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES);
}
使用int数组中具有最大值的索引,因为0
mean STATISTICS_FACE_DETECT_MODE_OFF
,1
meanSTATISTICS_FACE_DETECT_MODE_SIMPLE
和2
is STATISTICS_FACE_DETECT_MODE_FULL
。
您的设备可能返回0或1。如果是这种情况,则只需要“简单面部检测”即可,而不是“完整”。
如果仍然不能解决问题,请检查您使用的是前置摄像头还是后置摄像头,然后尝试使用相反的摄像头(您提到的示例源代码在实现此目的方面非常简单)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句