Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用FaceDetector google vision检测到人脸时拍照_Java_Android_Face Detection_Vision_Face - Fatal编程技术网

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
    }
}