簡體   English   中英

慢人臉檢測android

[英]slow face detection android

嗨,我的面部檢測線程工作太慢,只有當線程不工作時,我才從 onPreviewFrame 調用這個線程,否則我只是跳過調用,在線程檢測到面部之后,我在視圖內調用 onDraw 來繪制矩形

    public void run() {
        FaceDetector faceDetector = new FaceDetector(bitmapImg.getWidth(), bitmapImg.getHeight(), 1);
        numOfFacesDetected = faceDetector.findFaces(bitmapImg, detectedFaces);

        if (numOfFacesDetected != 0) {
            detectedFaces.getMidPoint(eyesMidPoint);
            eyesDistance = detectedFaces.eyesDistance();

            handler.post(new Runnable() {
                public void run() {
                    mPrev.invalidate();
                    // turn off thread lock
                }
            });

            mPrev.setEyesDistance(eyesDistance);
            mPrev.setEyesMidPoint(eyesMidPoint);
        }

        isThreadWorking = false;
    }


public void onPreviewFrame(byte[] yuv, Camera camera) {

如果(isThreadWorking)返回;

    isThreadWorking = true;
    ByteBuffer bbuffer = ByteBuffer.wrap(yuv);
    bbuffer.get(grayBuff_, 0, bufflen_);

    detectThread = new FaceDetectThread(handler);
    detectThread.setBuffer(grayBuff_);
    detectThread.start();

我的問題可能是因為我正在使用 bitmap 而不是灰度需要太長時間? 我怎樣才能提高速度?

FaceDetector API 並不是真正用於處理實時預覽中的幀。 這是慢下來的方式。

如果您在相當新的設備上運行,更好的選擇是在 Android 14+ 中使用FaceDetectionListener API。 它非常快,可用於在預覽 SurfaceHolder 上創建覆蓋。

暫無
暫無

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

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