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