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:
COORDINATE_SYSTEM_VIEW_REFERENCED
: DönüştürülmüşPreviewView
koordinatları.COORDINATE_SYSTEM_ORIGINAL
: OrijinalImageAnalysis
akışı koordinatları.
Tüketici geri çağırmasını çağıran ve
MlKitAnalyzer.Result
veya bir kamera çerçevesinin toplu ML Kiti sonucunu uygulamaya ileten birExecutor
.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.