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 มีดังนี้
COORDINATE_SYSTEM_VIEW_REFERENCED
: พิกัดPreviewView
ที่เปลี่ยนรูปแบบCOORDINATE_SYSTEM_ORIGINAL
: พิกัดดั้งเดิมของสตรีมImageAnalysis
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