آنالایزر کیت ML

کیت ML Google APIهای Vision یادگیری ماشینی روی دستگاه را برای شناسایی چهره‌ها، اسکن بارکدها، برچسب‌گذاری تصاویر و موارد دیگر ارائه می‌کند. ML Kit Analyzer ادغام ML Kit با برنامه CameraX را آسان تر می کند.

ML Kit Analyzer پیاده سازی رابط ImageAnalysis.Analyzer است. برای بهینه‌سازی استفاده از کیت ML ، وضوح هدف پیش‌فرض (در صورت نیاز) را لغو می‌کند، تبدیل مختصات را مدیریت می‌کند و فریم‌ها را به کیت ML می‌دهد، که نتایج تجزیه و تحلیل انبوه را برمی‌گرداند.

پیاده سازی ML Kit Analyzer

برای پیاده سازی ML Kit Analyzer، توصیه می کنیم از کلاس CameraController استفاده کنید که با PreviewView برای نمایش عناصر UI کار می کند. هنگامی که با استفاده از CameraController اجرا می شود، ML Kit Analyzer تبدیل مختصات بین جریان اصلی ImageAnalysis و PreviewView را برای شما انجام می دهد. این سیستم مختصات هدف را از CameraX دریافت می کند، تبدیل مختصات را محاسبه می کند و آن را برای تجزیه و تحلیل به کلاس Detector ML Kit ارسال می کند.

برای استفاده از ML Kit Analyzer با CameraController ، setImageAnalysisAnalyzer() را فراخوانی کنید و یک شی ML Kit Analyzer جدید با موارد زیر در سازنده آن ارسال کنید:

  • فهرستی از ML Kit Detector که CameraX به ترتیب آنها را فراخوانی می کند.
  • سیستم مختصات هدف که مختصات خروجی کیت ML را تعیین می کند:

  • Executor که فراخوانی Consumer را فراخوانی می کند و MlKitAnalyzer.Result یا نتیجه کیت ML جمع آوری شده از یک قاب دوربین را به برنامه تحویل می دهد.

  • یک Consumer ، که CameraX زمانی که خروجی کیت ML جدید وجود دارد، آن را فراخوانی می کند.

کد زیر ML Kit Analyzer را با استفاده از CameraController برای راه اندازی BarcodeScanner برای شناسایی کدهای QR پیاده سازی می کند:

کاتلین

// 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 Analyzer را با استفاده از کلاس ImageAnalysis که بخشی از camera-core است پیاده سازی کنید. با این حال، به دلیل اینکه ImageAnalysis با PreviewView ادغام نشده است، باید به صورت دستی تبدیل مختصات را مدیریت کنید. برای اطلاعات بیشتر، به مستندات مرجع ML Kit Analyzer مراجعه کنید.

منابع اضافی

برای یک برنامه دوربین کار با عملکرد ML Kit Analyzer، به نمونه CameraX-MLKit مراجعه کنید.