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提供人脸检测,我想用它。哦,我误解了你的问题。你说得对,人脸检测是另一回事:)