ML Kiti Analiz Aracı

Google'ın ML Kit'i; yüzleri algılama, barkodları tarama, resimleri etiketleme ve daha fazlası için cihaz üzerinde makine öğrenimi Vision API'leri sağlar. ML Kit Analyzer, ML Kit'i CameraX uygulamanızla entegre etmeyi kolaylaştırır.

ML Kit Analyzer, ImageAnalysis.Analyzer arayüzünün bir uygulamasıdır. ML Kiti kullanımını optimize etmek için varsayılan hedef çözünürlüğü geçersiz kılar (gerekirse), koordinat dönüşümlerini gerçekleştirir ve kareleri ML Kiti'ne iletir. ML Kiti de birleştirilmiş analiz sonuçlarını döndürür.

ML Kit Analyzer'ı uygulama

ML Kit Analyzer'ı uygulamak için kullanıcı arayüzü öğelerini görüntülemek üzere PreviewView ile çalışan CameraController sınıfını kullanmanızı öneririz. CameraController kullanılarak uygulandığında ML Kit Analyzer, orijinal ImageAnalysis akışı ile PreviewView arasındaki koordinat dönüşümlerini sizin için gerçekleştirir. CameraX'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 Analyzer'ı CameraController ile kullanmak için setImageAnalysisAnalyzer() yöntemini çağırın ve oluşturucusunda aşağıdaki bilgilerin yer aldığı yeni bir ML Kit Analyzer nesnesi iletin:

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

  • Tüketici geri çağırma işlevini çağıran ve MlKitAnalyzer.Result veya bir kamera karesinin birleştirilmiş ML Kiti sonucunu uygulamaya gönderen bir Executor.

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

Aşağıdaki kod, QR kodlarını algılamak için BarcodeScanner ayarlamak üzere CameraController kullanarak ML Kit Analyzer'ı uygular:

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

Yukarıdaki kod örneğinde ML Kit Analyzer, BarcodeScanner'nin Detector sınıfına aşağıdakileri 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 bir hata verir ve ML Kit Analyzer bu hatayı uygulamanıza iletir. İşlem başarılı olursa ML Kit Analyzer, MLKitAnalyzer.Result#getValue() değerini döndürür. Bu durumda bu değer, Barcode nesnesidir.

ML Kit Analyzer'ı camera-core'ün bir parçası olan ImageAnalysis sınıfını kullanarak da uygulayabilirsiniz. Ancak ImageAnalysis, PreviewView ile entegre olmadığından koordinat dönüşümlerini manuel olarak yapmanız gerekir. Daha fazla bilgi için ML Kit Analyzer referans belgelerini inceleyin.

Ek kaynaklar

ML Kit Analyzer işlevine sahip çalışan bir kamera uygulaması için CameraX-MLKit örneğine bakın.