【问题标题】:onFaceDetection called only once or twice while running but works perfectly when debugging with breakpointsonFaceDetection 在运行时仅调用一次或两次,但在使用断点调试时可以完美运行
【发布时间】:2015-11-03 18:32:14
【问题描述】:

这是我用于人脸检测的代码,问题是当我使用 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();
                        }
                    }
                });
            }
        };
    }
}

【问题讨论】:

    标签: java android face-detection


    【解决方案1】:

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

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

    onPreviewFrame(byte[] pixelData, Camera camera)
    

    方法

    Camera.PreviewCallback()
    

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

    【讨论】:

      猜你喜欢
      • 2021-03-04
      • 2014-08-15
      • 2017-09-24
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多