ML Kit od Google udostępnia działające na urządzeniu interfejsy Vision API do wykrywania treści rozpoznawania twarzy, skanowania kodów kreskowych, oznaczania zdjęć etykietami itp. ML Kit Analyzer łatwiej będzie zintegrować ML Kit z aplikacją CameraX.
ML Kit Analyzer to implementacja interfejsu ImageAnalysis.Analyzer. Zastępuje domyślną rozdzielczość docelową
(w razie potrzeby) w celu optymalizacji pod kątem użycia ML Kit, obsługuje przekształcenia współrzędnych,
i przekazuje ramki do narzędzia ML Kit, które zwraca wyniki analizy zbiorczej.
Wdrażanie Analizatora pakietów ML Kit
Do implementacji ML Kit Analyzer zalecamy użycie klasy CameraController, która współpracuje z PreviewView do wyświetlania elementów interfejsu. W przypadku implementacji za pomocą narzędzia CameraController ML Kit Analyzer
obsługuje przekształcenia współrzędnych między oryginalnym obiektem ImageAnalysis
transmisja z gry i PreviewView dla Ciebie. Otrzymuje docelowy układ współrzędnych z
AparatX, oblicza przekształcenie współrzędnych,
i przekazuje je do analizy w klasie Detector ML Kit.
Aby używać narzędzia ML Kit Analyzer z CameraController, wywołaj setImageAnalysisAnalyzer() i przekaż go
nowy obiekt ML Kit Analyzer z tym konstruktorem:
- Lista Detectorkomponentów ML Kit, które AparatX wywołuje po kolei.
- Docelowy układ współrzędnych, który określa współrzędne danych wyjściowych ML Kit: - COORDINATE_SYSTEM_VIEW_REFERENCED: przekształcone współrzędne- PreviewView.
- COORDINATE_SYSTEM_ORIGINAL: oryginalne współrzędne strumienia- ImageAnalysis.
 
- Executor, który wywołuje wywołanie zwrotne klienta i dostarcza- MlKitAnalyzer.Resultlub zagregowany wynik ML Kit dotyczący klatki kamery.
- Consumer, który jest wywoływany przez AparatX, gdy pojawią się nowe dane wyjściowe ML Kit.
Ten kod implementuje ML Kit Analyzer przy użyciu CameraController do konfiguracji
BarcodeScanner do wykrywania kodów QR:
Kotlin
// create BarcodeScanner object val options = BarcodeScannerOptions.Builder() .setBarcodeFormats(Barcode.FORMAT_QR_CODE) .build() val barcodeScanner = BarcodeScanning.getClient(options) cameraController.setImageAnalysisAnalyzer( ContextCompat.getMainExecutor(this), MlKitAnalyzer( listOf(barcodeScanner), COORDINATE_SYSTEM_VIEW_REFERENCED, ContextCompat.getMainExecutor(this) ) { result: MlKitAnalyzer.Result? -> // The value of result.getResult(barcodeScanner) can be used directly for drawing UI overlay. } )
Java
// create BarcodeScanner object BarcodeScannerOptions options = new BarcodeScannerOptions.Builder() .setBarcodeFormats(Barcode.FORMAT_QR_CODE) .build(); BarcodeScanner barcodeScanner = BarcodeScanning.getClient(options); cameraController.setImageAnalysisAnalyzer(executor, new MlKitAnalyzer(List.of(barcodeScanner), COORDINATE_SYSTEM_VIEW_REFERENCED, executor, result -> { // The value of result.getResult(barcodeScanner) can be used directly for drawing UI overlay. });
W przykładowym kodzie powyżej ML Kit Analyzer przekazuje poniższe dane do
Zajęcia ucznia BarcodeScanner (Detector):
- Matryca przekształceń
w oparciu o tabelę COORDINATE_SYSTEM_VIEW_REFERENCED, która reprezentuje docelowy układ współrzędnych.
- Ramka aparatu.
Jeśli na stronie BarcodeScanner wystąpią problemy, jej Detector zgłosi błąd,
a ML Kit Analyzer przekaże go do Twojej aplikacji. Jeśli operacja się uda, ML Kit Analyzer zwróci błąd MLKitAnalyzer.Result#getValue(), który
w tym przypadku jest obiekt Barcode.
Możesz też wdrożyć ML Kit Analyzer przy użyciu klasy ImageAnalysis, która jest częścią camera-core. Ponieważ jednak ImageAnalysis
 nie jest zintegrowany z PreviewView,
 musisz ręcznie edytować
przekształcenia współrzędnych. Aby dowiedzieć się więcej,
zapoznaj się z dokumentacją ML Kit Analyzer.
Dodatkowe materiały
W przypadku działającej aplikacji aparatu z funkcją ML Kit Analyzer: zobacz przykład z CameraX-MLKit.
