【发布时间】:2011-10-26 13:53:27
【问题描述】:
您好,我的面部检测线程工作太慢, 仅当线程不工作时,我才从 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) {
if (isThreadWorking) 返回;
isThreadWorking = true;
ByteBuffer bbuffer = ByteBuffer.wrap(yuv);
bbuffer.get(grayBuff_, 0, bufflen_);
detectThread = new FaceDetectThread(handler);
detectThread.setBuffer(grayBuff_);
detectThread.start();
我的问题可能是因为使用位图而不是灰度需要太长时间?如何提高速度?
【问题讨论】:
-
YUV 数组首先包含亮度数据,这将使您可以处理灰度图像。
标签: android multithreading face-detection