onFaceDetection 在 运行 时仅调用一次或两次,但在使用断点进行调试时可以完美运行

onFaceDetection called only once or twice while running but works perfectly when debugging with breakpoints

这是我用于人脸检测的代码,问题是当我使用 android studio 调试此代码时,多次调用 onFaceDetection 方法并完美检测到人脸(当我放置一个断点时方法内部)。但是当我 运行 它没有任何断点时,该方法只被调用 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();
                        }
                    }
                });
            }
        };
    }
}

这是我的无知,显然你不能在媒体记录器 运行ning 时进行人脸检测 运行ning,所以大家不要尝试 运行人脸检测,同时用相机录制。

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

onPreviewFrame(byte[] pixelData, Camera camera)

中的方法
Camera.PreviewCallback()

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