เครื่องมือวิเคราะห์ 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