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
Detector
komponentó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ędnePreviewView
.COORDINATE_SYSTEM_ORIGINAL
: oryginalne współrzędne strumieniaImageAnalysis
.
Executor
, który wywołuje wywołanie zwrotne klienta i dostarczaMlKitAnalyzer.Result
lub 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.