안녕하세요. 내 얼굴 감지 스레드가 너무 느리게 작동하고 있습니다. 스레드가 작동하지 않는 경우에만 onPreviewFrame에서이 스레드를 호출합니다. 그 밖의 호출은 건너 뜁니다. 스레드가 얼굴을 발견하면 얼굴 안의 onDraw를 호출합니다. 직사각형 그리기느린 얼굴 감지 android
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) {
if (isThreadWorking) return;
isThreadWorking = true;
ByteBuffer bbuffer = ByteBuffer.wrap(yuv);
bbuffer.get(grayBuff_, 0, bufflen_);
detectThread = new FaceDetectThread(handler);
detectThread.setBuffer(grayBuff_);
detectThread.start();
내 질문은 어쩌면 비트 맵으로 작업 중이며 너무 오래 걸리는 회색 계급이 아니기 때문일 수 있습니다. 어떻게 속도를 향상시킬 수 있습니까?
YUV 배열은 우선 루미넌스 데이터가 있으며 그레이 스케일 이미지로 작업 할 수 있습니다. – yeyeyerman