ML Kiti Analiz Aracı

Google'ın ML Kit'i; yüz algılama, barkod tarama, görüntü etiketleme ve daha pek çok işlem için cihaz üzerinde makine öğrenimi Vision API'leri sağlar. ML Kit Analiz Aracı, ML Kiti'ni CameraX uygulamanıza entegre etmenizi kolaylaştırır.

ML Kit Analiz Aracı, ImageAnalysis.Analyzer arayüzünün bir uygulamasıdır. Makine öğrenimi kiti kullanımını optimize etmek için (gerekirse) varsayılan hedef çözünürlüğü geçersiz kılar, koordinat dönüşümlerini işler ve kareleri, toplu analiz sonuçlarını döndüren ML Kit'e iletir.

ML Kit Analiz Aracı'nı uygulama

ML Kit Analiz Aracı'nı uygulamak için, kullanıcı arayüzü öğelerini görüntülemek amacıyla PreviewView ile çalışan CameraController sınıfını kullanmanızı öneririz. CameraController kullanıldığında ML Kit Analiz Aracı, orijinal ImageAnalysis akışı ile PreviewView arasındaki koordinat dönüşümlerini sizin için gerçekleştirir. KameraX'ten hedef koordinat sistemini alır, koordinat dönüşümünü hesaplar ve analiz için ML Kit'in Detector sınıfına yönlendirir.

ML Kit Analiz Aracı'nı CameraController ile kullanmak için setImageAnalysisAnalyzer() yöntemini çağırın ve oluşturucusuna aşağıdaki şekilde sahip yeni bir ML Kit Analiz Aracı nesnesi iletin:

  • CameraX'in sırayla çağırdığı ML Kit Detector'lerinin listesi.
  • ML Kiti çıktısının koordinatlarını belirleyen hedef koordinat sistemi:

  • Tüketici geri çağırmasını çağıran ve MlKitAnalyzer.Result veya bir kamera çerçevesinin toplu ML Kiti sonucunu uygulamaya ileten bir Executor.

  • CameraX'in yeni ML Kit çıkışı olduğunda çağırdığı bir Consumer.

Aşağıdaki kod, QR kodlarını algılamak üzere BarcodeScanner kurmak için CameraController ile ML Kit Analiz Aracı'nı uygular:

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.
 });

Yukarıdaki kod örneğinde ML Kit Analiz Aracı, aşağıdakileri BarcodeScanner uygulamasının Detector sınıfına iletir:

  • Hedef koordinat sistemini temsil eden COORDINATE_SYSTEM_VIEW_REFERENCED tabanlı dönüşüm Matrisi.
  • Kamera çerçeveleri.

BarcodeScanner herhangi bir sorunla karşılaşırsa Detector, hata verir ve ML Kit Analiz Aracı bunu uygulamanıza yayar. Başarılı olursa ML Kit Analiz Aracı, MLKitAnalyzer.Result#getValue() değerini döndürür. Bu örnekte, Barcode nesnesi kullanılır.

ML Kit Analiz Aracı'nı, camera-core kapsamında bulunan ImageAnalysis sınıfını kullanarak da uygulayabilirsiniz. Ancak ImageAnalysis, PreviewView ile entegre olmadığından koordinat dönüşümlerini manuel olarak gerçekleştirmeniz gerekir. Daha fazla bilgi için ML Kit Analiz Aracı referans belgelerine göz atın.

Ek kaynaklar

ML Kit Analiz Aracı işlevselliğine sahip çalışan bir kamera uygulaması için KameraX-MLKit örneğine bakın.