Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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 谷歌眼镜上的人脸检测监听器_Java_Android_Google Glass - Fatal编程技术网

Java 谷歌眼镜上的人脸检测监听器

Java 谷歌眼镜上的人脸检测监听器,java,android,google-glass,Java,Android,Google Glass,我一直在尝试在谷歌眼镜上启动人脸检测。它应该是实时运行的,因为我想触发一个自定义的方法,如果在摄像机视线中有脸。不幸的是,它总是检测不到人脸。 我希望在应用程序启动后立即开始检测,因此我在曲面创建时开始人脸识别: @Override public void surfaceCreated(SurfaceHolder holder) { camera = Camera.open(); this.setCameraParameters(camera); try {

我一直在尝试在谷歌眼镜上启动人脸检测。它应该是实时运行的,因为我想触发一个自定义的方法,如果在摄像机视线中有脸。不幸的是,它总是检测不到人脸。 我希望在应用程序启动后立即开始检测,因此我在曲面创建时开始人脸识别:

@Override
public void surfaceCreated(SurfaceHolder holder) {
    camera = Camera.open();
    this.setCameraParameters(camera);
    try {
        camera.setPreviewDisplay(this.getHolder());
    } catch (IOException e1) {
        Log.e("surface created", e1.getMessage());
    }
    camera.startPreview();
    try {
        camera.setPreviewDisplay(holder);
        CameraManager manager = new CameraManager(this, camera);
        manager.startFaceRecognition();
    } catch (Exception e) {
        this.releaseCamera();
    }
}
manager.startFaceRecognition的实施:

public void startFaceRecognition() {
    ...
    camera.setFaceDetectionListener(new FaceDetectionTriggeringListener());
}
它与我传递给构造函数的摄影机对象相同。人脸检测监听器的实现:

public class FaceDetectionTriggeringListener implements FaceDetectionListener {

    @Override
    public void onFaceDetection(Face[] faces, Camera camera) {
        if (faces.length > 0) {
            Log.d("onFaceDetection", Integer.toString(faces.length));
        }
        for (Face face : faces) {
            Log.d("onFaceDetection", Integer.toString(face.score));
        }
    }
}
在最后一个代码部分中,
faces.length
始终为零,不记录任何内容。我试过记录faces.length,它实际上输出为零。我尝试过不同的面孔,包括我的项目经理和谷歌搜索的图片。 请注意,我想在实时这样做,我不需要最终的准确性。我尝试过包括图片转码在内的方法,但它们速度太慢,占用了太多的CPU,结果导致玻璃发热,严重消耗电池电量。我们的目标是这样写:

if (faces.length > 0){
    Foo.bar();
}

这个问题有什么解决办法吗?如果可以实时工作,可以接受其他解决方案。

请注意Google forbis人脸识别在其策略中:@Manu,我想人脸识别和人脸检测是不同的事情。我知道谷歌的政策,谢谢你指出。谷歌的安卓API提供人脸检测,我想用它。哦,我误解了你的问题。你说得对,人脸检测是另一回事:)