ML Kit של Google מספק ממשקי API של Vision ללמידת מכונה במכשיר פנים, סריקת ברקודים, הוספת תוויות לתמונות ועוד. בעזרת ML Kit Analyzer קל יותר לשלב ML Kit עם אפליקציית CameraX.
ML Kit Analyzer הוא יישום של הממשק ImageAnalysis.Analyzer
. ההגדרה מבטלת את רזולוציית היעד שמוגדרת כברירת מחדל
(במקרה הצורך) כדי לבצע אופטימיזציה לשימוש ב-ML Kit, טיפול בטרנספורמציות הקואורדינטות,
ומעבירה את הפריימים ל-ML Kit, שמחזירה את תוצאות הניתוח המצטברות.
הטמעת כלי לניתוח של ערכת למידת מכונה (ML Kit Analyzer)
כדי להטמיע ML Kit Analyzer, מומלץ להשתמש במחלקה CameraController
, שפועלת עם PreviewView
כדי להציג רכיבי ממשק משתמש. כשמטמיעים את הקוד CameraController
, ML Kit Analyzer
מטפל בטרנספורמציות הקואורדינטות בין ImageAnalysis
המקורי
ו-PreviewView
בשבילך. הוא מקבל את מערכת קואורדינטות היעד מ-
CameraX, מחשבת את טרנספורמציה של קואורדינטות,
ומעבירה אותו לכיתה Detector
של ML Kit לצורך ניתוח.
כדי להשתמש ב-ML Kit Analyzer עם CameraController
, יש להתקשר אל setImageAnalysisAnalyzer()
ולהעביר אותו
אובייקט חדש של ML Kit Analyzer עם ה-constructor שלו:
- רשימה של ערכות
Detector
ללמידת מכונה, שבהן CameraX מופעל ברצף. מערכת קואורדינטות היעד שקובעת את הקואורדינטות של הפלט של ML Kit:
COORDINATE_SYSTEM_VIEW_REFERENCED
: הקואורדינטותPreviewView
שעברו שינוי.COORDINATE_SYSTEM_ORIGINAL
: הקואורדינטות המקוריות של הזרםImageAnalysis
.
Executor
שמפעיל את הקריאה החוזרת של הצרכן ומבצע את המסירה אתMlKitAnalyzer.Result
, או את התוצאה המצטברת של ערכת למידת המכונה בפריים של האפליקציה.Consumer
, ש- CameraX מופעל כשיש פלט חדש של ML Kit.
הקוד הבא מיישם את ML Kit Analyzer באמצעות CameraController
כדי להגדיר
BarcodeScanner
כדי לזהות קודי 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. });
בדוגמת הקוד שלמעלה, ML Kit Analyzer מעביר את הערכים הבאים אל
הכיתה של BarcodeScanner
ב-Detector
:
- הטרנספורמציה Matrix
שמבוסס על
COORDINATE_SYSTEM_VIEW_REFERENCED
שמייצג את מערכת קואורדינטות היעד. - המסגרות של המצלמה.
אם BarcodeScanner
ייתקל בבעיות, אז Detector
תוצג שגיאה,
ו-ML Kit Analyzer מפיץ אותו לאפליקציה שלכם. אם הפעולה בוצעה ללא שגיאות, ML Kit Analyzer מחזיר את הערך MLKitAnalyzer.Result#getValue()
,
במקרה הזה הוא האובייקט Barcode
.
אפשר גם להטמיע ML Kit Analyzer באמצעות המחלקה ImageAnalysis
ששייכת ל-camera-core
. עם זאת, מכיוון ש-ImageAnalysis
לא משולב עם PreviewView
,
תצטרכו לטפל באופן ידני בשינויי הקואורדינטות. לקבלת מידע נוסף,
קראו את מאמרי העזרה של ML Kit Analyzer.
מקורות מידע נוספים
אם יש לכם אפליקציית מצלמה פעילה עם פונקציונליות של ML Kit Analyzer: ראו דוגמה של CameraX-MLKit.