В этом документе описаны шаги, которые необходимо предпринять для переноса ваших проектов из Google Mobile Vision (GMV) в ML Kit на Android.
Общие изменения API
Эти изменения применяются ко всем API:
- API GMV синхронно возвращают результат
SparseArray<T>
. API ML Kit используют API задач служб Google Play для асинхронного возврата результатов. - GMV использует вызов
isOperational()
в интерфейсе API, чтобы указать, успешно ли загружен модуль и готов ли он к использованию. В ML Kit такого метода нет. ML Kit выдает исключениеMlKitException.UNAVAILABLE
, если модуль не был загружен. Вы можете перехватить это исключение и обработать следующий кадр или установить тайм-аут и повторить попытку с текущим кадром. - Методы GMV используют
Frame
для ввода. ML Kit используетInputImage
. - GMV предоставляет платформы
MultiDetector
,MultiProcessor
иFocusingProcessor
для выполнения нескольких обнаружений и фильтрации результатов. ML Kit не предоставляет таких механизмов, но тот же функционал при желании может быть реализован разработчиком.
Обновить импорт Gradle
Обновите зависимости для библиотек Android ML Kit в файле Gradle вашего модуля (на уровне приложения), который обычно имеет имя app/build.gradle
, согласно следующей таблице:
API | Артефакт ГМВ | Артефакт комплекта ML |
---|---|---|
Детектор лица | com.google.android.gms:play-services-vision:xxx | com.google.android.gms:play-services-mlkit-face-detection:17.1.0 |
Детектор штрих-кода | com.google.android.gms:play-services-vision:xxx | com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1 |
Распознавание текста | com.google.android.gms:play-services-vision:xxx | com.google.android.gms:play-services-mlkit-text-recognition:19.0.1 |
КамераИсточник | com.google.android.gms:play-services-vision:xxx | com.google.mlkit:camera:16.0.0-beta3 |
Изменения API
В этом разделе описаны соответствующие классы и методы GMV и ML Kit для каждого Vision API, а также показано, как инициализировать API.
Детектор лица
Перекодируйте инициализацию, как показано в этом примере:
ГМВ
detector = new FaceDetector.Builder(context) .setMode(FaceDetector.ACCURATE_MODE) .setLandmarkType(FaceDetector.ALL_LANDMARKS) .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS) .build();
ML-комплект
FaceDetectorOptions options = new FaceDetectorOptions.Builder() .setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_ACCURATE) .setLandmarkMode(FaceDetectorOptions.LANDMARK_MODE_ALL) .setClassificationMode(FaceDetectorOptions.CLASSIFICATION_MODE_ALL) .build(); detector = FaceDetection.getClient(options);
Измените следующие имена классов и методов:
android.gms.vision.face | mlkit.vision.face |
---|---|
FaceDetector | FaceDetector |
SparseArray<Face> detect(Frame frame) | Task<List<Face>> process(@NonNull InputImage image) |
FaceDetector.Builder.setClassificationType(int classificationType) | FaceDetectorOptions.Builder. setClassificationMode(int classificationMode) |
NO_CLASSIFICATIONS, ALL_CLASSIFICATIONS | CLASSIFICATION_MODE_NONE , CLASSIFICATION_MODE_ALL |
FaceDetector.Builder.setLandmarkType(int landmarkType) | FaceDetectorOptions.Builder. setLandmarkMode(int landmarkMode) |
NO_LANDMARKS, ALL_LANDMARKS, CONTOUR_LANDMARKS | LANDMARK_MODE_NONE , LANDMARK_MODE_ALL используйте |
FaceDetector.Builder.setTrackingEnabled(boolean trackingEnabled) | FaceDetectorOptions.Builder. enableTracking() |
FaceDetector.Builder.setMinFaceSize(float proportionalMinFaceSize) | FaceDetectorOptions.Builder. setMinFaceSize(float minFaceSize) |
FaceDetector.Builder.setMode(int mode) | FaceDetectorOptions.Builder. setPerformanceMode(int performanceMode) |
FAST_MODE, ACCURATE_MODE | PERFORMANCE_MODE_FAST , PERFORMANCE_MODE_ACCURATE |
FaceDetector.Builder.setProminentFaceOnly(boolean prominentFaceOnly) | Эта функция реализована в режиме контура лица. |
Face | Face |
Contour | FaceContour |
Landmark | FaceLandmark |
Face.getContours() | Face. getAllContours() |
Face.getEulerY() | Face. getHeadEulerAngleY() |
Face.getEulerZ() | Face. getHeadEulerAngleZ() |
Face.getId() | Face. getTrackingId() |
Face.getIsLeftEyeOpenProbability() | Face. getLeftEyeOpenProbability() |
Face.getIsRightEyeOpenProbability() | Face. getRightEyeOpenProbability() |
Face.getIsSmilingProbability() | Face. getSmilingProbability() |
Face.getLandmarks() | Face. getLandmark(int landmarkType) |
Face.getPosition() | Face. getBoundingBox() |
Детектор штрих-кода
Перекодируйте инициализацию, как показано в этом примере:
ГМВ
barcodeDetector = new BarcodeDetector.Builder(context).build());
ML-комплект
barcodeScanner = BarcodeScanning.getClient();
Измените следующие имена классов и методов:
android.gms.vision.barcode | mlkit.vision.barcode |
---|---|
BarcodeDetector | BarcodeScanner |
SparseArray<Barcode> detect(Frame frame) | Task<List<Barcode>> process(@NonNull InputImage image) |
Barcode | Barcode |
Распознавание текста
Перекодируйте инициализацию, как показано в этом примере:
ГМВ
textRecognizer = new TextRecognizer.Builder(context).build();
ML-комплект
textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);
Измените следующие имена классов и методов:
android.gms.vision.text | mlkit.vision.text |
---|---|
TextRecognizer | TextRecognizer |
SparseArray<TextBlock> detect(Frame frame) | Task<Text> process(@NonNull InputImage image) |
SparseArray<TextBlock> | Text |
Line | Line |
TextBlock | TextBlock |
Element | Element |
getLanguage() | getRecognizedLanguage() |
getBoundingBox() | getBoundingBox() |
getCornerPoints() | getCornerPoints() |
TextBlock.getComponents() | TextBlock.getLines() |
TextBlock.getValue() | TextBlock.getText() |
Element.getValue() | Element.getText() |
КамераИсточник
Если вы используете библиотеку CameraSource, предоставленную Google Mobile Vision, вы можете легко перейти на библиотеку CameraXSource
ML Kit, при условии, что ваше приложение работает на минимальной версии SDK >= 21.
Измените следующие имена классов и методов:
android.gms.vision | mlkit.vision.camera |
---|---|
CameraSource | CameraSourceConfig |
CameraSource.Builder | CameraSourceConfig.Builder |
CameraSource.Builder.setAutoFocusEnabled | Автофокусировка предоставляется по умолчанию при использовании CameraX. |
CameraSource.Builder.setFacing | CameraSourceConfig.Builder . setCameraFacing |
CameraSource.Builder.setFocusMode | Автофокусировка предоставляется по умолчанию при использовании CameraX. |
CameraSource.Builder.setRequestedFps | Устарело. |
CameraSource.Builder.setRequestedPreviewSize | CameraSourceConfig.Builder . setRequestedPreviewSize |
CameraSource | CameraXSource |
new CameraSource.Builder(mContext, detector)....build(); | CameraXSource(CameraSourceConfig, PreviewView) |
getCameraFacing() | getCameraFacing () |
getPreviewSize() | getPreviewSize () |
release() | close () |
start(SurfaceHolder surfaceHolder) | start () // The previewview is set in the CameraSourceConfig |
start() | start () |
stop() | stop () |
Detector.Processor | DetectionTaskCallback |
receiveDetections(Detections<T> detections) | void onDetectionTaskReceived(@NonNull Task<ResultT> detectionTask); |
release() | Обрабатывается внутри |
CameraSource.PictureCallback | Устарело |
CameraSource.ShutterCallback | Устарело |
Получение помощи
Если у вас возникнут какие-либо проблемы, посетите нашу страницу сообщества , где мы перечисляем каналы, доступные для связи с нами.
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2024-11-12 UTC.