Google의 ML Kit는 얼굴 인식, 바코드 스캔, 이미지 라벨 지정 등을 위한 기기 내 머신러닝 Vision API를 제공합니다. ML Kit 분석 도구를 사용하면 ML Kit를 CameraX 앱과 더 쉽게 통합할 수 있습니다.
ML Kit 분석 도구는 ImageAnalysis.Analyzer
인터페이스의 구현입니다. 기본 타겟 해상도를 재정의하여(필요한 경우) ML Kit 사용을 최적화하고, 좌표 변환을 처리하고, 프레임을 ML Kit에 전달하여 집계된 분석 결과를 반환합니다.
ML Kit 분석 도구 구현
ML Kit 분석 도구를 구현하려면 PreviewView
와 함께 작동하여 UI 요소를 표시하는 CameraController
클래스를 사용하는 것이 좋습니다. CameraController
를 사용하여 구현하면 ML Kit 분석 도구에서 원래 ImageAnalysis
스트림과 PreviewView
간의 좌표 변환을 처리합니다. CameraX에서 타겟 좌표계를 수신하여 좌표 변환을 계산한 후 분석을 위해 ML Kit의 Detector
클래스로 전달합니다.
CameraController
와 함께 ML Kit 분석 도구를 사용하려면 setImageAnalysisAnalyzer()
를 호출하고 생성자에 다음이 포함된 새 ML Kit 분석 도구 객체를 전달합니다.
- CameraX가 순차적으로 호출하는 ML Kit
Detector
목록 ML Kit 출력의 좌표를 결정하는 타겟 좌표계:
COORDINATE_SYSTEM_VIEW_REFERENCED
: 변환된PreviewView
좌표입니다.COORDINATE_SYSTEM_ORIGINAL
: 원래ImageAnalysis
스트림 좌표입니다.
Executor
: 소비자 콜백을 호출하고MlKitAnalyzer.Result
또는 카메라 프레임의 집계된 ML Kit 결과를 앱에 전달합니다.Consumer
: 새 ML Kit 출력이 있을 때 CameraX에서 호출합니다.
다음 코드는 QR 코드를 감지하는 BarcodeScanner
를 설정하도록 CameraController
를 사용하여 ML Kit 분석 도구를 구현합니다.
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. } )
자바
// 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 분석 도구는 BarcodeScanner
의 Detector
클래스에 다음을 전달합니다.
- 타겟 좌표계를 나타내는
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 샘플을 참고하세요.