[英]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.