簡體   English   中英

onFaceDetection在運行時只調用一次或兩次,但在使用斷點進行調試時效果很好

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

這是我用於人臉檢測的代碼,問題是當我用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();
                        }
                    }
                });
            }
        };
    }
}

這是我的無知,顯然你不能在媒體錄音機運行時進行面部檢測,所以當你用相機同時錄制時,你不會嘗試運行人臉檢測。

如果您真的想在錄制時檢測面部,那么您應該使用

onPreviewFrame(byte[] pixelData, Camera camera)

方法

Camera.PreviewCallback()

將pixelData轉換為RGB_565位圖並將其提供給FaceDetector.findfaces方法。 但根據我的經驗,我發現這種方法非常不可靠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM