Java 使用FaceDetector google vision检测到人脸时拍照
我在这里找到了演示代码:Java 使用FaceDetector google vision检测到人脸时拍照,java,android,face-detection,vision,face,Java,Android,Face Detection,Vision,Face,我在这里找到了演示代码: 我的问题是如何在检测到人脸时拍摄照片并将其保存到设备,当我们拍摄第一张照片时,下一张照片将在检测到人脸时5秒后拍摄,因为我们无法将许多照片保存到设备。您必须在camera API中添加FaceDetectionListener,然后调用startFaceDetection()方法 实现Camera.FaceDetectionListener,在onFaceDetection覆盖方法中接收检测到的人脸 private class MyFaceDetectionListen
我的问题是如何在检测到人脸时拍摄照片并将其保存到设备,当我们拍摄第一张照片时,下一张照片将在检测到人脸时5秒后拍摄,因为我们无法将许多照片保存到设备。您必须在camera API中添加FaceDetectionListener,然后调用startFaceDetection()方法 实现Camera.FaceDetectionListener,在onFaceDetection覆盖方法中接收检测到的人脸
private class MyFaceDetectionListener
implements Camera.FaceDetectionListener {
@Override
public void onFaceDetection(Face[] faces, Camera camera) {
if (faces.length == 0) {
Log.i(TAG, "No faces detected");
} else if (faces.length > 0) {
Log.i(TAG, "Faces Detected = " +
String.valueOf(faces.length));
public List<Rect> faceRects;
faceRects = new ArrayList<Rect>();
for (int i=0; i<faces.length; i++) {
int left = faces[i].rect.left;
int right = faces[i].rect.right;
int top = faces[i].rect.top;
int bottom = faces[i].rect.bottom;
Rect uRect = new Rect(left0, top0, right0, bottom0);
faceRects.add(uRect);
}
// add function to draw rects on view/surface/canvas
}
}
私有类MyFaceDetectionListener
实现Camera.FaceDetectionListener{
@凌驾
人脸检测(人脸[]人脸,摄像头){
如果(faces.length==0){
Log.i(标记“未检测到面”);
}否则如果(faces.length>0){
Log.i(标记,“检测到的面=”+
字符串.valueOf(faces.length));
公开列表faceRects;
faceRects=新的ArrayList();
对于(int i=0;我知道如何拍照吗?在检测到人脸时调用它!是的,我想是的。但我不知道何时检测到人脸以及如何处理它。谢谢,但问题是onfacedection多次调用,所以如果使用处理程序,它将引发异常:“无法在未调用Looper.prepare()的线程内创建处理程序”Looper.prepare()方法用于在线程中创建队列。因此,我们可以这样说,mHandler=new Handler(Looper.getMainLooper()){@Override public void handleMessage(Message Message){//这是您在UI线程中执行工作的地方。//您的工作人员会在消息中告诉您要做什么。}};否则,我建议使用AsyncTask,它可以很好地处理在后台运行的大多数事情。一旦在PostExecute上完成,将调用Keep方法更新UI。
private class MyFaceDetectionListener
implements Camera.FaceDetectionListener {
@Override
public void onFaceDetection(Face[] faces, Camera camera) {
if (faces.length == 0) {
Log.i(TAG, "No faces detected");
} else if (faces.length > 0) {
Log.i(TAG, "Faces Detected = " +
String.valueOf(faces.length));
public List<Rect> faceRects;
faceRects = new ArrayList<Rect>();
for (int i=0; i<faces.length; i++) {
int left = faces[i].rect.left;
int right = faces[i].rect.right;
int top = faces[i].rect.top;
int bottom = faces[i].rect.bottom;
Rect uRect = new Rect(left0, top0, right0, bottom0);
faceRects.add(uRect);
}
// add function to draw rects on view/surface/canvas
}
}