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