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:
COORDINATE_SYSTEM_VIEW_REFERENCED: DönüştürülenPreviewViewkoordinatları.COORDINATE_SYSTEM_ORIGINAL: OrijinalImageAnalysisakış koordinatları.
Tüketici geri çağırma işlevini çağıran ve
MlKitAnalyzer.Resultveya bir kamera karesinin birleştirilmiş ML Kiti sonucunu uygulamaya gönderen birExecutor.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_REFERENCEDtabanlı 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.