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 範例。