Nếu những gì bạn cần là để phát hiện khuôn mặt trong hình ảnh được lưu trữ trên thiết bị, bạn chắc chắn có thể làm điều này mà không cần hack mã nguồn của Android!
Có một API FaceDetector
đó được phát hành theo gói android.media
từ API 1, mà chấp nhận Bitmap
như là đầu vào (định dạng trong 565 định dạng) và cung cấp cho bạn vị trí của khuôn mặt trong bức tranh đó.
Dưới đây là các bước bạn cần:
1- Nạp Bitmap
và chuyển nó sang 565 format
(giả sử bạn có facesPicture
tập tin dưới nguồn drawable của bạn)
Bitmap originalBitmap =
BitmapFactory.decodeResource(getResources(),R.drawable.facesPicture);
Bitmap bitmap = originalBitmap .copy(Bitmap.Config.RGB_565, true);
originalBitmap .recycle(); // allow the GC to collect this object
2- Xác định Face
mảng để chứa thông tin khuôn mặt được phát hiện và khởi tạo số FaceDetector
int MAX_FACES = 20; // assuming that the image will have maximum 20 faces
FaceDetector.Face[] faces = new FaceDetector.Face[MAX_FACES];
FaceDetector faceDetector =
new FaceDetector(bitmap.getWidth(), bitmap.getHeight(), MAX_FACES);
3- Tìm kiếm cho khuôn mặt và xử lý kết quả
int facesCount = faceDetector.findFaces(bitmap, faces);
for(int i=0; i<facesCount; i++) {
FaceDetector.Face face = faces[i];
float detectionConfidence = face.confidence(); // over 0.3 is OK
PointF eyesMidPoint = new PointF();
face.getMidPoint(eyesMidPoint);
float eyesDistance = face.eyesDistance();
float rotationX = face.pose(FaceDetector.Face.EULER_X);
float rotationY = face.pose(FaceDetector.Face.EULER_Y);
float rotationZ = face.pose(FaceDetector.Face.EULER_Z);
// Do something with these values
}
Bạn có thể tải trọn vẹn một ví dụ dự án here đó được giải thích trong bài viết này Face Detection with Android APIs
Nếu bạn muốn một cái gì đó cao cấp hơn, bạn nên xem xét sử dụng OpenCV
Cảm ơn, nhưng tôi đã không thể thực sự tìm thấy mã nguồn cho API Camera (tôi đã tìm kiếm). Bất kỳ trợ giúp về điều này đánh giá cao. –
Hãy thử xem qua mã tại đây: https://android.googlesource.com/platform/packages/apps/Camera/+/master Nếu nó không có trong đó, nó rất có thể sẽ nằm trong khung phần cứng. Cho tôi biết làm thế nào nó đi. – NathanTempelman
Thực ra không có gì trong: http://code.google.com/a/eclipselabs.org/p/face-recognition-android/source/browse/ Cảm ơn anyway –