เครื่องมือวิเคราะห์ ML Kit
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ML Kit ของ Google มี Vision API ของแมชชีนเลิร์นนิงในอุปกรณ์เพื่อการตรวจหา
ใบหน้า การสแกนบาร์โค้ด การติดป้ายกำกับรูปภาพ และอื่นๆ เครื่องมือวิเคราะห์ ML Kit ทำให้สำเร็จ
ผสานรวม ML Kit กับแอป CameraX ได้ง่ายขึ้น
เครื่องมือวิเคราะห์ ML Kit เป็นการใช้งานอินเทอร์เฟซ ImageAnalysis.Analyzer
จะลบล้างความละเอียดเป้าหมายเริ่มต้น
(หากจำเป็น) เพื่อเพิ่มประสิทธิภาพสำหรับการใช้งาน ML Kit จัดการการแปลงพิกัด
แล้วส่งเฟรมไปยัง ML Kit ซึ่งจะแสดงผลการวิเคราะห์แบบรวม
นำเครื่องมือวิเคราะห์ ML Kit มาใช้
หากต้องการใช้เครื่องมือวิเคราะห์ ML Kit เราขอแนะนำให้ใช้คลาส CameraController
ซึ่งทำงานร่วมกับ PreviewView
เพื่อแสดงองค์ประกอบ UI เมื่อใช้ CameraController
เครื่องมือวิเคราะห์ ML Kit
จัดการการแปลงพิกัดระหว่าง ImageAnalysis
เดิม
และสตรีม PreviewView
ให้กับคุณ โมเดลจะรับระบบพิกัดเป้าหมายจาก
CameraX คำนวณการแปลงพิกัด
และส่งต่อไปยังชั้นเรียน Detector
ของ ML Kit เพื่อวิเคราะห์
หากต้องการใช้ ML Kit analyticsr กับ CameraController
โปรดโทรหา setImageAnalysisAnalyzer()
เพื่อส่งข้อมูลให้
ออบเจ็กต์ ML Kit analyticsr ใหม่พร้อมด้วยข้อมูลต่อไปนี้ในเครื่องมือสร้าง
- รายการ ML Kit
Detector
ซึ่ง CameraX เรียกใช้ตามลำดับ
ระบบพิกัดเป้าหมายที่กำหนดพิกัดของเอาต์พุต ML Kit มีดังนี้
Executor
ที่เรียกใช้การเรียกกลับของผู้บริโภคและแสดง
MlKitAnalyzer.Result
หรือผลลัพธ์ของ ML Kit ที่รวบรวมจากเฟรมกล้องไปยังแอป
Consumer
ซึ่ง CameraX จะเรียกใช้เมื่อมีเอาต์พุต ML Kit ใหม่
โค้ดต่อไปนี้จะติดตั้งใช้งานเครื่องมือวิเคราะห์ ML Kit โดยใช้ CameraController
ในการตั้งค่า
BarcodeScanner
เพื่อตรวจหาคิวอาร์โค้ด
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 analyticsr จะส่งข้อมูลต่อไปนี้ไปยัง
ชั้นเรียน Detector
ของ BarcodeScanner
:
- การเปลี่ยนรูปแบบเมทริกซ์
ตาม
COORDINATE_SYSTEM_VIEW_REFERENCED
ซึ่งแสดงระบบพิกัดเป้าหมาย
- เฟรมของกล้อง
หาก BarcodeScanner
พบปัญหา Detector
จะแสดงข้อผิดพลาด
และโปรแกรมวิเคราะห์ ML Kit เผยแพร่ข้อมูลดังกล่าวไปยังแอปของคุณ หากสำเร็จ ML Kit analyticsr จะแสดงผล MLKitAnalyzer.Result#getValue()
ในกรณีนี้คือออบเจ็กต์ Barcode
นอกจากนี้ คุณยังติดตั้งใช้งานเครื่องมือวิเคราะห์ ML Kit ได้โดยใช้คลาส ImageAnalysis
ซึ่งเป็นส่วนหนึ่งของ camera-core
อย่างไรก็ตาม เนื่องจาก ImageAnalysis
ไม่ได้ผสานรวมกับ PreviewView
คุณต้องจัดการกับการแปลงพิกัดด้วยตนเอง สำหรับข้อมูลเพิ่มเติม
โปรดดูเอกสารอ้างอิงเครื่องมือวิเคราะห์ ML Kit
แหล่งข้อมูลเพิ่มเติม
สำหรับแอปกล้องที่ใช้งานได้ที่มีฟังก์ชันตัววิเคราะห์ ML Kit
ดูตัวอย่าง 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."]]