כלי לניתוח ערכת למידת מכונה
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
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:
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.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-07-27 (שעון UTC)."],[],[],null,["# ML Kit Analyzer\n\nGoogle's [ML Kit](https://developers.google.com/ml-kit/guides) provides on-device machine learning Vision APIs for detecting\nfaces, scanning barcodes, labeling images, and more. ML Kit Analyzer makes it\neasier to integrate ML Kit with your CameraX app.\n\nML Kit Analyzer is an implementation of the [`ImageAnalysis.Analyzer`](/reference/androidx/camera/core/ImageAnalysis.Analyzer) interface. It overrides the [default target resolution](/reference/androidx/camera/core/ImageAnalysis.Analyzer#getDefaultTargetResolution())\n(if needed) to optimize for ML Kit usage, handles the coordinate transformations,\nand passes the frames to ML Kit, which returns the aggregated analysis results.\n\nImplement ML Kit Analyzer\n-------------------------\n\nTo implement ML Kit Analyzer, we recommend using the [`CameraController`](/reference/androidx/camera/view/CameraController) class, which works with [`PreviewView`](/reference/androidx/camera/view/PreviewView) to display UI elements. When implemented using `CameraController`, ML Kit Analyzer\nhandles the coordinate transformations between the original `ImageAnalysis`\nstream and `PreviewView` for you. It receives the target coordinate system from\nCameraX, calculates the coordinate transformation,\nand forwards it to ML Kit's [`Detector`](https://developers.google.com/android/reference/com/google/mlkit/vision/interfaces/Detector) class for analysis.\n\nTo use ML Kit Analyzer with `CameraController`, call [`setImageAnalysisAnalyzer()`](/reference/androidx/camera/view/CameraController#setImageAnalysisAnalyzer(java.util.concurrent.Executor,androidx.camera.core.ImageAnalysis.Analyzer)) and pass it\na new ML Kit Analyzer object with the following in its constructor:\n\n- A list of ML Kit `Detector`s, which CameraX invokes sequentially in order.\n- The target coordinate system that determines the coordinates of the ML Kit output:\n\n - [`COORDINATE_SYSTEM_VIEW_REFERENCED`](/reference/androidx/camera/view/CameraController#COORDINATE_SYSTEM_VIEW_REFERENCED()): the transformed `PreviewView` coordinates.\n - [`COORDINATE_SYSTEM_ORIGINAL`](/reference/androidx/camera/core/ImageAnalysis#COORDINATE_SYSTEM_ORIGINAL()): the original `ImageAnalysis` stream coordinates.\n- An [`Executor`](/reference/java/util/concurrent/Executor) that invokes the Consumer callback and delivers\n the [`MlKitAnalyzer.Result`](/reference/androidx/camera/mlkit/vision/MlKitAnalyzer.Result), or the aggregated ML Kit result of a camera frame, to the app.\n\n- A [`Consumer`](/reference/androidx/core/util/Consumer), which CameraX invokes when there is new ML Kit output.\n\nThe following code implements ML Kit Analyzer using `CameraController` to set up\na [`BarcodeScanner`](https://developers.google.com/android/reference/com/google/mlkit/vision/barcode/BarcodeScanner) to detect QR codes: \n\n### Kotlin\n\n```kotlin\n// create BarcodeScanner object\nval options = BarcodeScannerOptions.Builder()\n .setBarcodeFormats(Barcode.FORMAT_QR_CODE)\n .build()\nval barcodeScanner = BarcodeScanning.getClient(options)\n\ncameraController.setImageAnalysisAnalyzer(\n ContextCompat.getMainExecutor(this),\n MlKitAnalyzer(\n listOf(barcodeScanner),\n COORDINATE_SYSTEM_VIEW_REFERENCED,\n ContextCompat.getMainExecutor(this)\n ) { result: MlKitAnalyzer.Result? -\u003e\n // The value of result.getResult(barcodeScanner) can be used directly for drawing UI overlay.\n }\n)\n```\n\n### Java\n\n```java\n// create BarcodeScanner object\nBarcodeScannerOptions options = new BarcodeScannerOptions.Builder()\n .setBarcodeFormats(Barcode.FORMAT_QR_CODE)\n .build();\nBarcodeScanner barcodeScanner = BarcodeScanning.getClient(options);\n\ncameraController.setImageAnalysisAnalyzer(executor,\n new MlKitAnalyzer(List.of(barcodeScanner), COORDINATE_SYSTEM_VIEW_REFERENCED,\n executor, result -\u003e {\n // The value of result.getResult(barcodeScanner) can be used directly for drawing UI overlay.\n });\n```\n\nIn the code sample above, ML Kit Analyzer passes the following to\n`BarcodeScanner`'s `Detector` class:\n\n- The transformation [Matrix](/reference/android/graphics/Matrix) based on `COORDINATE_SYSTEM_VIEW_REFERENCED` that represents the target coordinate system.\n- The camera frames.\n\nIf `BarcodeScanner` runs into any issues, then its `Detector` [throws an error](/reference/androidx/camera/mlkit/vision/MlKitAnalyzer.Result#getThrowable(com.google.mlkit.vision.interfaces.Detector%3C?%3E)),\nand ML Kit Analyzer propagates it to your app. If successful, then ML Kit Analyzer returns [`MLKitAnalyzer.Result#getValue()`](/reference/androidx/camera/mlkit/vision/MlKitAnalyzer.Result#getValue(com.google.mlkit.vision.interfaces.Detector%3CT%3E)), which\nin this case is the [`Barcode`](https://developers.google.com/android/reference/com/google/mlkit/vision/barcode/common/Barcode) object.\n\nYou can also implement ML Kit Analyzer using the [`ImageAnalysis`](/reference/androidx/camera/core/ImageAnalysis) class that is part of `camera-core`. However, because `ImageAnalysis`\nis not integrated with `PreviewView`,\nyou must manually handle the coordinate transformations. For more information,\nsee the [ML Kit Analyzer](/reference/androidx/camera/mlkit/vision/MlKitAnalyzer) reference documentation.\n\nAdditional resources\n--------------------\n\nFor a working camera app with ML Kit Analyzer functionality,\nsee the [CameraX-MLKit](https://github.com/android/camera-samples/tree/main/CameraX-MLKit) sample."]]