Android FaceDetector.findFaces не находит лиц

Это код, который я написал для запуска детектора лица Android. К сожалению, он не находит. Я поместил это в onPreviewFrame(данные, камера).

Camera.Parameters parameters = camera.getParameters();
Camera.Size size = parameters.getPreviewSize();
YuvImage image = new YuvImage(data, ImageFormat.NV21, size.width, size.height, null);
Rect rectangle = new Rect(0, 0, size.width, size.height);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
int quality = 100;
image.compressToJpeg(rectangle, quality, stream);
Bitmap bitmap = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());
FaceDetector detector = new FaceDetector(size.width, size.height, 5);
FaceDetector.Face[] faces = new FaceDetector.Face[5];
int numFaces = detector.findFaces(bitmap, faces);
textView.setText("numFaces = " + numFaces);

Есть идеи? исправления?

1 ответ

Я думаю, что вы должны проверить правильность ваших растровых данных в первую очередь. Вы должны setPreviewSize до startPreview, проверьте, совпадает ли размер с данными предварительного просмотра. или вы можете жестко закодировать его (640, 480) для теста. Если ваше растровое изображение правильно. возможно API не может работать из-за качества входных данных. Вы можете сбросить некоторые данные и попробовать проверить другое приложение или библиотеку, например OpenCV. Удачи.

Другие вопросы по тегам