2016-01-31 3 views
4

Мне нужен простой способ обнаружения лиц в приложении для камеры. Все, о чем я забочусь, это обратный вызов, говорящий, что лицо было обнаружено в определенном месте или с координатами, где оно было обнаружено при предварительном просмотре. Я заметил, что, похоже, есть несколько API-интерфейсов обнаружения лиц - в сервисах Google Play и в API-интерфейсах legacy и camera2. Какой из них следует использовать для простого требования, описанного выше?Обнаружение лица Android - API Vision API или камеры

ответ

5

Устаревшая версия старше и имеет гораздо более низкую точность, чем новый API сервисов Google Play.

API-камера camera2 зависит от возможностей обнаружения лиц, встроенных в аппаратуру камеры, поэтому она не всегда доступна на всех устройствах. Я не сделал исчерпывающего сравнения, но я считаю, что точность также ниже, чем у нового API сервисов Google Play.

Смотрите этот учебник за использование сервисов Google Play для отслеживания лиц в камеры предварительного просмотра:

https://developers.google.com/vision/face-tracker-tutorial

выполнения обратного вызова, который вы хотите определить, будет подкласс Tracker, похожий на GraphicFaceTracker в учебник.

Если вам не нужно отслеживать лицо или у вас есть другой код, который управляет камерой, вы можете вызвать детектор лица непосредственно, как это:

Frame frame = Frame.Builder().setBitmap(myBitmap).build(); 
SparseArray<Face> faces = faceDetector.detect(frame); 

Смотрите информацию здесь:

https://developers.google.com/android/reference/com/google/android/gms/vision/package-summary

+0

Спасибо. Если посмотреть, как на Play, так и на устаревшие API, и с помощью Play один действительно не прямой, особенно если у вас есть собственный класс контроллера камеры и не используйте CameraSource. Попробовал реализовать ту же логику, что и исходный CameraSource с открытым исходным кодом для моего кода, но там, кажется, есть ошибка. Через несколько часов все-таки закончилось использование устаревших API. – vkislicins

+0

Я добавил дополнительную информацию о том, как напрямую обращаться к детектору лица. Было ли что-то особенное, что вы не нашли прямо об API? – pm0733464

+0

Проблема, которую я получаю, заключается в использовании той же логики в контроллере камеры, что и в CameraSource (https://github.com/googlesamples/android-vision/blob/master/visionSamples/barcode-reader/app/src /main/java/com/google/android/gms/samples/vision/barcodereader/ui/camera/CameraSource.java). Существует карта для хранения кадров, и извлечение из нее всегда дает нуль (строка 1124 в источнике выше). Возникает проблема, связанная с примером кода, который связан: https://github.com/googlesamples/android-vision/issues/60 – vkislicins