ML Kit Google menyediakan Vision API machine learning di perangkat untuk mendeteksi wajah, memindai kode batang, melabeli gambar, dan lainnya. ML Kit Analyzer mempermudah integrasi ML Kit dengan aplikasi CameraX Anda.
ML Kit Analyzer adalah implementasi antarmuka ImageAnalysis.Analyzer
. ML Kit Analyzer menggantikan resolusi target default
(jika diperlukan) untuk mengoptimalkan penggunaan ML Kit, menangani transformasi koordinat,
dan meneruskan bingkai ke ML Kit, yang menampilkan hasil analisis gabungan.
Mengimplementasikan ML Kit Analyzer
Untuk mengimplementasikan ML Kit Analyzer, sebaiknya gunakan class CameraController
, yang berfungsi dengan PreviewView
untuk menampilkan elemen UI. Jika diimplementasikan menggunakan CameraController
, ML Kit Analyzer
akan menangani transformasi koordinat antara aliran ImageAnalysis
asli dan PreviewView
untuk Anda. ML Kit Analyzer menerima sistem koordinat target dari
CameraX, menghitung transformasi koordinat,
dan meneruskannya ke class Detector
ML Kit untuk dianalisis.
Untuk menggunakan ML Kit Analyzer dengan CameraController
, panggil setImageAnalysisAnalyzer()
dan teruskan
objek ML Kit Analyzer baru dengan yang berikut ini di konstruktornya:
- Daftar
Detector
ML Kit, yang dipanggil CameraX secara berurutan. Sistem koordinat target yang menentukan koordinat output ML Kit:
COORDINATE_SYSTEM_VIEW_REFERENCED
: koordinatPreviewView
yang ditransformasi.COORDINATE_SYSTEM_ORIGINAL
: koordinat aliranImageAnalysis
asli.
Executor
yang memanggil callback Konsumen dan mengirimkanMlKitAnalyzer.Result
, atau hasil ML Kit gabungan dari bingkai kamera, ke aplikasi.Consumer
, yang dipanggil CameraX saat ada output ML Kit baru.
Kode berikut mengimplementasikan ML Kit Analyzer menggunakan CameraController
untuk menyiapkan
BarcodeScanner
guna mendeteksi kode 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. });
Pada contoh kode di atas, ML Kit Analyzer meneruskan yang berikut ke
class Detector
BarcodeScanner
:
- Matrix
transformasi berdasarkan
COORDINATE_SYSTEM_VIEW_REFERENCED
yang mewakili sistem koordinat target. - Bingkai kamera.
Jika BarcodeScanner
mengalami masalah, Detector
akan menampilkan error,
dan ML Kit Analyzer akan mendistribusikannya ke aplikasi Anda. Jika berhasil, ML Kit Analyzer akan menampilkan MLKitAnalyzer.Result#getValue()
, yang
dalam hal ini adalah objek Barcode
.
Anda juga dapat mengimplementasikan ML Kit Analyzer menggunakan class ImageAnalysis
yang merupakan bagian dari camera-core
. Namun, karena ImageAnalysis
tidak terintegrasi dengan PreviewView
,
Anda harus menangani transformasi koordinat secara manual. Untuk informasi selengkapnya,
lihat dokumentasi referensi ML Kit Analyzer.
Referensi lainnya
Untuk aplikasi kamera yang berfungsi dengan fungsionalitas ML Kit Analyzer, lihat contoh CameraX-MLKit.