این سند مراحلی را که باید برای انتقال پروژه های خود از Google Mobile Vision (GMV) به ML Kit در اندروید انجام دهید، پوشش می دهد.
تغییرات کلی API
این تغییرات برای همه API ها اعمال می شود:
- API های GMV یک نتیجه
SparseArray<T>
را به صورت همزمان برمی گرداند. APIهای ML Kit از Google Play Services Task API برای برگرداندن نتایج به صورت ناهمزمان استفاده می کنند. - GMV از فراخوانی
isOperational()
در سطح API استفاده می کند تا نشان دهد که آیا یک ماژول با موفقیت دانلود شده و آماده استفاده است یا خیر. کیت ام ال چنین روشی ندارد. اگر ماژول دانلود نشده باشد، ML Kit یک استثناMlKitException.UNAVAILABLE
ایجاد می کند. میتوانید این استثنا را بگیرید و فریم بعدی را پردازش کنید یا یک بازه زمانی تعیین کنید و با فریم فعلی دوباره امتحان کنید. - روش های GMV از
Frame
برای ورودی استفاده می کنند. کیت ML ازInputImage
استفاده می کند. - GMV چارچوب های
MultiDetector
،MultiProcessor
وFocusingProcessor
را برای انجام تشخیص های متعدد و فیلتر کردن نتایج ارائه می دهد. ML Kit چنین مکانیزمهایی را ارائه نمیکند، اما در صورت تمایل توسعهدهنده میتواند همان عملکرد را پیادهسازی کند.
Gradle Imports را به روز کنید
طبق جدول زیر، وابستگیهای کتابخانههای اندروید ML Kit را در فایل Gradle ماژول (سطح برنامه) خود، که معمولاً app/build.gradle
است، بهروزرسانی کنید:
API | مصنوع GMV | مصنوع کیت ام ال |
---|---|---|
تشخیص چهره | com.google.android.gms:play-services-vision:xxx | com.google.android.gms:play-services-mlkit-face-detection:17.1.0 |
بارکد یاب | com.google.android.gms:play-services-vision:xxx | com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1 |
تشخیص متن | com.google.android.gms:play-services-vision:xxx | com.google.android.gms:play-services-mlkit-text-recognition:19.0.1 |
منبع دوربین | com.google.android.gms:play-services-vision:xxx | com.google.mlkit:camera:16.0.0-beta3 |
تغییرات API
این بخش کلاسها و روشهای مربوط به GMV و ML Kit را برای هر Vision API توضیح میدهد و نحوه تنظیم اولیه API را نشان میدهد.
تشخیص چهره
همانطور که در این مثال نشان داده شده است، مقداردهی اولیه را دوباره کدگذاری کنید:
جی ام وی
detector = new FaceDetector.Builder(context) .setMode(FaceDetector.ACCURATE_MODE) .setLandmarkType(FaceDetector.ALL_LANDMARKS) .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS) .build();
کیت ام ال
FaceDetectorOptions options = new FaceDetectorOptions.Builder() .setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_ACCURATE) .setLandmarkMode(FaceDetectorOptions.LANDMARK_MODE_ALL) .setClassificationMode(FaceDetectorOptions.CLASSIFICATION_MODE_ALL) .build(); detector = FaceDetection.getClient(options);
نام کلاس و متد زیر را تغییر دهید:
android.gms.vision.face | mlkit.vision.face |
---|---|
FaceDetector | FaceDetector |
SparseArray<Face> detect(Frame frame) | Task<List<Face>> process(@NonNull InputImage image) |
FaceDetector.Builder.setClassificationType(int classificationType) | FaceDetectorOptions.Builder. setClassificationMode(int classificationMode) |
NO_CLASSIFICATIONS, ALL_CLASSIFICATIONS | CLASSIFICATION_MODE_NONE , CLASSIFICATION_MODE_ALL |
FaceDetector.Builder.setLandmarkType(int landmarkType) | FaceDetectorOptions.Builder. setLandmarkMode(int landmarkMode) |
NO_LANDMARKS, ALL_LANDMARKS, CONTOUR_LANDMARKS | LANDMARK_MODE_NONE , LANDMARK_MODE_ALL از |
FaceDetector.Builder.setTrackingEnabled(boolean trackingEnabled) | FaceDetectorOptions.Builder. enableTracking() |
FaceDetector.Builder.setMinFaceSize(float proportionalMinFaceSize) | FaceDetectorOptions.Builder. setMinFaceSize(float minFaceSize) |
FaceDetector.Builder.setMode(int mode) | FaceDetectorOptions.Builder. setPerformanceMode(int performanceMode) |
FAST_MODE, ACCURATE_MODE | PERFORMANCE_MODE_FAST , PERFORMANCE_MODE_ACCURATE |
FaceDetector.Builder.setProminentFaceOnly(boolean prominentFaceOnly) | این ویژگی با حالت کانتور صورت پوشانده شده است. |
Face | Face |
Contour | FaceContour |
Landmark | FaceLandmark |
Face.getContours() | Face. getAllContours() |
Face.getEulerY() | Face. getHeadEulerAngleY() |
Face.getEulerZ() | Face. getHeadEulerAngleZ() |
Face.getId() | Face. getTrackingId() |
Face.getIsLeftEyeOpenProbability() | Face. getLeftEyeOpenProbability() |
Face.getIsRightEyeOpenProbability() | Face. getRightEyeOpenProbability() |
Face.getIsSmilingProbability() | Face. getSmilingProbability() |
Face.getLandmarks() | Face. getLandmark(int landmarkType) |
Face.getPosition() | Face. getBoundingBox() |
بارکد یاب
همانطور که در این مثال نشان داده شده است، مقداردهی اولیه را دوباره کدگذاری کنید:
جی ام وی
barcodeDetector = new BarcodeDetector.Builder(context).build());
کیت ام ال
barcodeScanner = BarcodeScanning.getClient();
نام کلاس و متد زیر را تغییر دهید:
android.gms.vision.barcode | mlkit.vision.barcode |
---|---|
BarcodeDetector | BarcodeScanner |
SparseArray<Barcode> detect(Frame frame) | Task<List<Barcode>> process(@NonNull InputImage image) |
Barcode | Barcode |
تشخیص متن
همانطور که در این مثال نشان داده شده است، مقداردهی اولیه را دوباره کدگذاری کنید:
جی ام وی
textRecognizer = new TextRecognizer.Builder(context).build();
کیت ام ال
textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);
نام کلاس و متد زیر را تغییر دهید:
android.gms.vision.text | mlkit.vision.text |
---|---|
TextRecognizer | TextRecognizer |
SparseArray<TextBlock> detect(Frame frame) | Task<Text> process(@NonNull InputImage image) |
SparseArray<TextBlock> | Text |
Line | Line |
TextBlock | TextBlock |
Element | Element |
getLanguage() | getRecognizedLanguage() |
getBoundingBox() | getBoundingBox() |
getCornerPoints() | getCornerPoints() |
TextBlock.getComponents() | TextBlock.getLines() |
TextBlock.getValue() | TextBlock.getText() |
Element.getValue() | Element.getText() |
منبع دوربین
اگر از کتابخانه CameraSource ارائه شده توسط Google Mobile Vision استفاده میکنید، میتوانید به راحتی به کتابخانه CameraXSource
ML Kit مهاجرت کنید، مشروط بر اینکه برنامه شما با نسخه حداقل sdk >= 21 اجرا شود.
نام کلاس و متد زیر را تغییر دهید:
android.gms.vision | mlkit.vision.camera |
---|---|
CameraSource | CameraSourceConfig |
CameraSource.Builder | CameraSourceConfig.Builder |
CameraSource.Builder.setAutoFocusEnabled | هنگام استفاده از CameraX، فوکوس خودکار به طور پیش فرض ارائه می شود. |
CameraSource.Builder.setFacing | CameraSourceConfig.Builder . setCameraFacing |
CameraSource.Builder.setFocusMode | هنگام استفاده از CameraX، فوکوس خودکار به طور پیش فرض ارائه می شود. |
CameraSource.Builder.setRequestedFps | منسوخ شده است. |
CameraSource.Builder.setRequestedPreviewSize | CameraSourceConfig.Builder . setRequestedPreviewSize |
CameraSource | CameraXSource |
new CameraSource.Builder(mContext, detector)....build(); | CameraXSource(CameraSourceConfig, PreviewView) |
getCameraFacing() | getCameraFacing () |
getPreviewSize() | getPreviewSize () |
release() | close () |
start(SurfaceHolder surfaceHolder) | start () // The previewview is set in the CameraSourceConfig |
start() | start () |
stop() | stop () |
Detector.Processor | DetectionTaskCallback |
receiveDetections(Detections<T> detections) | void onDetectionTaskReceived(@NonNull Task<ResultT> detectionTask); |
release() | به صورت داخلی رسیدگی می شود |
CameraSource.PictureCallback | منسوخ شده است |
CameraSource.ShutterCallback | منسوخ شده است |
کمک گرفتن
اگر با مشکلی مواجه شدید، صفحه انجمن ما را بررسی کنید، جایی که ما کانال های موجود برای تماس با ما را مشخص می کنیم.
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2024-11-12 بهوقت ساعت هماهنگ جهانی.