ML Kit Analyzer

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:

  • Executor yang memanggil callback Konsumen dan mengirimkan MlKitAnalyzer.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.