这是我用于人脸检测的代码,问题是当我用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();
}
}
});
}
};
}
}
答案 0 :(得分:0)
这对我来说是无知的,显然你在媒体录音机运行时无法进行人脸检测,所以当你同时用相机录制时,人们不会尝试进行人脸检测。 / p>
如果您真的想在录制时检测面部,那么您应该使用
onPreviewFrame(byte[] pixelData, Camera camera)
中的方法
Camera.PreviewCallback()
将pixelData转换为RGB_565位图并将其提供给FaceDetector.findfaces方法。但根据我的经验,我发现这种方法非常不可靠。