diff options
author | Zhijun He <zhijunhe@google.com> | 2013-10-16 23:39:24 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-10-16 23:39:24 +0000 |
commit | 6355103bcae6f46105a53e2a8210c0b809980506 (patch) | |
tree | 084df9aafba2c2978e3e593313282149707e2680 /core/java/android/hardware | |
parent | 265a099c105ec600e52011862c2e49b748a860d0 (diff) | |
parent | 844b3520cc31dbca40f282e5a0e3e6d442d4c686 (diff) | |
download | frameworks_base-6355103bcae6f46105a53e2a8210c0b809980506.zip frameworks_base-6355103bcae6f46105a53e2a8210c0b809980506.tar.gz frameworks_base-6355103bcae6f46105a53e2a8210c0b809980506.tar.bz2 |
Merge "Camera2: filter bad faces" into klp-dev
Diffstat (limited to 'core/java/android/hardware')
-rw-r--r-- | core/java/android/hardware/camera2/impl/CameraMetadataNative.java | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java index e42bdf5..072c5bb 100644 --- a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java +++ b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java @@ -518,21 +518,31 @@ public class CameraMetadataNative extends CameraMetadata implements Parcelable { } } - Face[] faces = new Face[numFaces]; + ArrayList<Face> faceList = new ArrayList<Face>(); if (faceDetectMode == CaptureResult.STATISTICS_FACE_DETECT_MODE_SIMPLE) { for (int i = 0; i < numFaces; i++) { - faces[i] = new Face(faceRectangles[i], faceScores[i]); + if (faceScores[i] <= Face.SCORE_MAX && + faceScores[i] >= Face.SCORE_MIN) { + faceList.add(new Face(faceRectangles[i], faceScores[i])); + } } } else { // CaptureResult.STATISTICS_FACE_DETECT_MODE_FULL for (int i = 0; i < numFaces; i++) { - Point leftEye = new Point(faceLandmarks[i*6], faceLandmarks[i*6+1]); - Point rightEye = new Point(faceLandmarks[i*6+2], faceLandmarks[i*6+3]); - Point mouth = new Point(faceLandmarks[i*6+4], faceLandmarks[i*6+5]); - faces[i] = new Face(faceRectangles[i], faceScores[i], faceIds[i], - leftEye, rightEye, mouth); + if (faceScores[i] <= Face.SCORE_MAX && + faceScores[i] >= Face.SCORE_MIN && + faceIds[i] >= 0) { + Point leftEye = new Point(faceLandmarks[i*6], faceLandmarks[i*6+1]); + Point rightEye = new Point(faceLandmarks[i*6+2], faceLandmarks[i*6+3]); + Point mouth = new Point(faceLandmarks[i*6+4], faceLandmarks[i*6+5]); + Face face = new Face(faceRectangles[i], faceScores[i], faceIds[i], + leftEye, rightEye, mouth); + faceList.add(face); + } } } + Face[] faces = new Face[faceList.size()]; + faceList.toArray(faces); return faces; } |