ML Kit Google، میاناهای برنامهسازی کاربردی Vision یادگیری ماشین دروندستگاهی را برای تشخیص چهره، اسکن کردن رمزینهها، برچسبگذاری تصاویر، و غیره ارائه میدهد. ML Kit Analyzer ادغام ML Kit با برنامه CameraX را آسانتر میکند.
«تحلیلگر کیت یادگیری ماشین» پیادهسازی میانای ImageAnalysis.Analyzer است. این کلاس وضوح هدف پیشفرض را (درصورت نیاز) برای بهینهسازی استفاده از ML Kit لغو میکند، تبدیلهای مختصات را مدیریت میکند، و فریمها را به ML Kit ارسال میکند که نتایج تحلیل تجمیعی را برمیگرداند.
پیادهسازی ML Kit Analyzer
برای پیادهسازی ML Kit Analyzer، توصیه میکنیم از کلاس CameraController استفاده کنید که با PreviewView برای نمایش عناصر میانای کاربر کار میکند. وقتی بااستفاده از CameraController پیادهسازی شود، ML Kit Analyzer
تبدیلهای مختصات بین جاریسازی 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که فراخوانی برگشت مصرفکننده را فراخوانی میکند و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. } )
جاوا
// 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 Analyzer موارد زیر را به کلاس Detector از BarcodeScanner ارسال میکند:
- ماتریس تبدیل
براساس
COORDINATE_SYSTEM_VIEW_REFERENCEDکه سیستم مختصات هدف را نشان میدهد. - قابهای دوربین.
اگر BarcodeScanner با مشکلی مواجه شود، Detector آن خطایی را برمیگرداند،
و ML Kit Analyzer آن را به برنامه شما منتقل میکند. اگر موفقیتآمیز باشد، ML Kit Analyzer MLKitAnalyzer.Result#getValue() را برمیگرداند، که
در این مورد شیء Barcode است.
همچنین میتوانید «تحلیلگر ML Kit» را بااستفاده از کلاس ImageAnalysis که بخشی از camera-core است پیادهسازی کنید. اما چون ImageAnalysis
با PreviewView ادغام نشده است،
باید تبدیل مختصات را بهصورت دستی انجام دهید. برای اطلاعات بیشتر،
به سند مرجع ML Kit Analyzer مراجعه کنید.
منابع بیشتر
برای برنامه دوربین فعال با عملکرد ML Kit Analyzer، نمونه CameraX-MLKit را ببینید.