ML Kit Google میاناهای برنامهسازی کاربردی Vision یادگیری ماشین دروندستگاهی را برای تشخیص چهره، اسکن کردن رمزینه، برچسبگذاری تصویر، و غیره ارائه میدهد. ML Kit Analyzer ادغام ML Kit با برنامه CameraX را آسانتر میکند.
«تحلیلگر ML Kit» پیادهسازی میانای 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. } )
در نمونه کد بالا، 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 را ببینید.