我想在非Camera应用程序中使用一些Android 4 API。
API包括一些非常好的人脸检测类,包括 Camera.Face
自API 14以来可用的类。我想应用相同的人脸检测类,以便对保存在设备上的图像进行面部检测。我更喜欢使用它来处理存储在设备上的图片(例如:社交标记,面部图像处理等)
我需要有关如何完成此重用任务的指导。
我想在非Camera应用程序中使用一些Android 4 API。
API包括一些非常好的人脸检测类,包括 Camera.Face
自API 14以来可用的类。我想应用相同的人脸检测类,以便对保存在设备上的图像进行面部检测。我更喜欢使用它来处理存储在设备上的图片(例如:社交标记,面部图像处理等)
我需要有关如何完成此重用任务的指导。
FaceDetectionListener是您想要用来检测面部的,但它只能侦听相机。这是它唯一的原生功能。如果你真的想在用户设备上的图片上使用它,我建议你只需下载相机API的源代码并根据需要调整你想要的方法。
你可以在这里找到所有股票Android代码的来源: https://android.googlesource.com/
祝你好运!
FaceDetectionListener是您想要用来检测面部的,但它只能侦听相机。这是它唯一的原生功能。如果你真的想在用户设备上的图片上使用它,我建议你只需下载相机API的源代码并根据需要调整你想要的方法。
你可以在这里找到所有股票Android代码的来源: https://android.googlesource.com/
祝你好运!
如果你需要的是检测存储在设备上的图像中的面部,你绝对可以做到这一点,而无需破解android的源代码!
有一个 FaceDetector
包下可用的API android.media
自API 1开始接受 Bitmap
作为输入(格式为565格式并给你那张照片中面孔的位置。
以下是您需要的步骤:
1-加载 Bitmap
并将其转换为 565 format
(假设你有 facesPicture
您的可绘制资源下的文件)
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-定义 Face
用于保存检测到的面部信息并初始化的数组 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-搜索面和处理结果
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
}
您可以下载完整的项目示例 这里 这篇文章对此进行了解释 使用Android API进行人脸检测
如果你想要更高级的东西,你应该考虑使用OpenCV
你知道吗? FaceDetector 类?它自API v1以来就已经存在并且运行良好。如果你需要更多的东西 高级 你可以随时使用一些专用的框架,比如 OpenCV的 (也提供了一些Java绑定,以便轻松集成到Android应用程序中)
您可以查看我之前与同事发表的一些(过时的,但仍然有用的)文章: