ML Kit 分析工具

Google 的 ML Kit 提供裝置端機器學習 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 接收目標座標系統、計算座標轉換,並轉送至 ML Kit 的 Detector 類別用於分析。

如要將 ML Kit 分析工具與 CameraController 搭配使用,請呼叫 setImageAnalysisAnalyzer()、向這段程式碼傳遞新的 ML Kit 分析工具物件,並將下列項目加入其建構函式:

以下程式碼使用 CameraController 實作 ML Kit 分析工具,設定用於偵測 QR code 的 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 分析工具將以下項目傳遞至 BarcodeScannerDetector 類別:

  • 轉換 Matrix,內容以代表目標座標系統的 COORDINATE_SYSTEM_VIEW_REFERENCED 為基礎。
  • 相機影格。

如果 BarcodeScanner 發生任何問題,其 Detector 就會擲回錯誤,且 ML Kit 分析工具會將這項資訊傳送到應用程式。成功後,ML Kit 分析工具將傳回 MLKitAnalyzer.Result#getValue() (在本例中為 Barcode 物件)。

您也可以使用 camera-core 包含的 ImageAnalysis 類別實作 ML Kit 分析工具。不過,由於 ImageAnalysis 未與 PreviewView 整合,因此您必須手動處理座標轉換。詳情請見 ML Kit 分析工具參考說明文件。

其他資源

如需具有 ML Kit 分析工具功能的可運作相機應用程式,請參閱 CameraX-MLKit 範例。