onFaceDetection在运行时只调用一次或两次,但在使用断点进行调试时效果很好

时间:2015-08-11 13:37:23

标签: java android face-detection

这是我用于人脸检测的代码,问题是当我用android studio调试这个代码时,多次调用onFaceDetection方法并且完全检测到face(当我在方法中放置一个断点时)。但是当我在没有任何断点的情况下运行它时,该方法仅被调用2-3次并且不会发生面部检测。任何有关这方面的帮助都会非常感激,正如您从代码中看到的那样我已经尝试停止并开始进行面部检测。

void setFaceDetectionListener() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        mFaceDetectionListener = new Camera.FaceDetectionListener() {
            Handler faceDetectionHandler;
            @Override
            public void onFaceDetection(final Camera.Face[] faces, final Camera camera) {
                if(faceDetectionHandler == null){//Initialize
                    faceDetectionHandler = new Handler();
                    Toast.makeText(HWTestActivity.this,
                            UiMessages.MSG_SHOW_YOUR_FACE.toString(),
                            Toast.LENGTH_SHORT).show();
                }
                faceDetectionHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        Log.e("faceDetect", "No of faces = " + faces.length);
                        if (!is_face_detected) {
                            Toast.makeText(HWTestActivity.this,
                                    UiMessages.MSG_DETECTING_YOUR_FACE.toString(),
                                    Toast.LENGTH_SHORT).show();
                            is_face_detected = faces.length > 0;
                        }
                        if (faces.length > 0) {
                            Toast.makeText(HWTestActivity.this,
                                    UiMessages.MSG_FACE_DETECTED.toString(),
                                    Toast.LENGTH_SHORT).show();
                            camera.stopFaceDetection();
                        } else {
                            camera.stopFaceDetection();
                            camera.startFaceDetection();
                        }
                    }
                });
            }
        };
    }
}

1 个答案:

答案 0 :(得分:0)

这对我来说是无知的,显然你在媒体录音机运行时无法进行人脸检测,所以当你同时用相机录制时,人们不会尝试进行人脸检测。 / p>

如果您真的想在录制时检测面部,那么您应该使用

onPreviewFrame(byte[] pixelData, Camera camera)

中的

方法

Camera.PreviewCallback()

将pixelData转换为RGB_565位图并将其提供给FaceDetector.findfaces方法。但根据我的经验,我发现这种方法非常不可靠。