Я использовал com.google.android.gms.vision.face.FaceDetector для обнаружения лиц в обратном вызове предварительного просмотра камеры, как показано ниже:
faceDetector = new FaceDetector.Builder(this)
.setTrackingEnabled(false)
.setMode(FaceDetector.FAST_MODE)
.setLandmarkType(FaceDetector.ALL_LANDMARKS)
.build();
mCamera.setPreviewCallbackWithBuffer(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(final byte[] data, Camera camera) {
if (faceDetector.isOperational()) {
int format = camera.getParameters().getPreviewFormat();
int width = camera.getParameters().getPreviewSize().width;
int height = camera.getParameters().getPreviewSize().height;
Frame frame = new Frame.Builder().setImageData(ByteBuffer.wrap(data), width, height, format).build();
SparseArray<Face> faces = faceDetector.detect(frame);
Log.d("TEST", "Num faces = " + faces.size());
}
mSurfaceView.requestRender();
camera.addCallbackBuffer(mImageBuffer);
}
});
Однако вывод всегда Num faces = 0
. Как я могу это исправить?