קהל
המטרה של המדריך הזה היא לעזור לכם לפתח אפליקציות באמצעות התכונה Crop Hints (הצעות לחיתוך) של Vision API. ההנחה היא שאתם מכירים מבנים וטכניקות בסיסיים בתכנות. עם זאת, גם אם אתם מתחילים בתכנות, תוכלו לעקוב אחרי המדריך הזה ולהריץ אותו בלי קושי, ואז להשתמש במאמרי העזרה של ה-Vision API כדי ליצור אפליקציות בסיסיות.
במדריך הזה נסביר איך להשתמש באפליקציית Vision API כדי לבצע קריאה ל-Vision API ולהשתמש בתכונה Crop Hints (הצעות לחיתוך).
דרישות מוקדמות
- מגדירים פרויקט Vision API במסוף Google Cloud .
מגדירים את הסביבה לשימוש ב-Application Default Credentials.
Python
- מתקינים את Python.
- מתקינים את pip.
- מתקינים את ספריית הלקוח של Google Cloud.
- התקנה של Python Imaging Library
סקירה כללית
במדריך הזה מוסבר איך ליצור אפליקציה בסיסית של Vision API שמשתמשת בCrop Hints בקשה. אפשר לספק את התמונה לעיבוד באמצעות URI של Cloud Storage (מיקום בקטגוריה של Cloud Storage) או באמצעות הטמעה בבקשה. תגובה מוצלחת של Crop Hints מחזירה את הקואורדינטות של תיבת תוחמת שנחתכה סביב האובייקט או הפנים הדומיננטיים בתמונה.
רשימת קודים
במהלך קריאת הקוד, מומלץ לעיין בהפניה ל-Cloud Vision API Python.
מבט מקרוב
ייבוא ספריות
אנחנו מייבאים ספריות רגילות:
-
argparseכדי לאפשר לאפליקציה לקבל שמות של קובצי קלט כארגומנטים -
ioלקלט/פלט של קבצים
ייבוא אחר:
- המחלקות
ImageAnnotatorClientבספרייהgoogle.cloud.visionלגישה ל-Vision API. - מודול
typesבספרייהgoogle.cloud.visionליצירת בקשות - מודולים
Imageו-ImageDrawמ-Python Imaging Library(PIL). כדי לצייר תיבת גבול בתמונת הקלט.
הפעלת האפליקציה
כאן אנחנו פשוט מנתחים את הארגומנט שהועבר ומציין את שם הקובץ של התמונה המקומית, ומעבירים אותו לפונקציה כדי לחתוך את התמונה או לצייר את הרמז.
אימות ל-API
לפני שמתקשרים עם שירות Vision API, צריך לאמת את השירות באמצעות פרטי כניסה שהושגו קודם. בתוך אפליקציה, הדרך הכי פשוטה לקבל פרטי כניסה היא באמצעות Application Default Credentials (ADC). כברירת מחדל, ספריית הלקוח תנסה לקבל פרטי כניסה ממשתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS, שצריך להיות מוגדר כך שיצביע על קובץ מפתח ה-JSON של חשבון השירות (מידע נוסף זמין במאמר בנושא הגדרת חשבון שירות).
קבלת הצעות חיתוך לתמונה
עכשיו, אחרי שספריית הלקוח של Vision מאומתת, אפשר לגשת לשירות באמצעות קריאה לשיטה crop_hints של מופע ImageAnnotatorClient.
יחס הגובה-רוחב של הפלט מצוין באובייקט ImageContext. אם מועברים כמה יחסי גובה-רוחב, יוחזרו כמה רמזים לחיתוך, אחד לכל יחס גובה-רוחב.
ספריית הלקוח כוללת את הפרטים של הבקשות והתגובות ל-API. מידע מלא על מבנה הבקשה זמין בהפניית Vision API.
שימוש בתשובה כדי לחתוך או לצייר את תיבת התוחמת של הרמז
אחרי שהפעולה תושלם בהצלחה, תגובת ה-API תכיל את קואורדינטות התיבה התוחמת של cropHint אחד או יותר. השיטה
draw_hint מציירת קווים מסביב לתיבת התוחמת CropHints, ואז כותבת
את התמונה אל output-hint.jpg.
השיטה crop_to_hint חותכת את התמונה באמצעות הצעת החיתוך המוצעת.
הפעלת האפליקציה
כדי להפעיל את האפליקציה, אפשר להוריד את הקובץ cat.jpg הזה (יכול להיות שתצטרכו ללחוץ לחיצה ימנית על הקישור), ואז להעביר את המיקום שבו הורדתם את הקובץ במחשב המקומי לאפליקציית ההדרכה (crop_hints.py).
זו פקודת Python, ואחריה פלט המסוף שבו מוצגת תגובת ה-JSON cropHintsAnnotation. התשובה הזו כוללת את הקואורדינטות של התיבה התוחמת cropHints. ביקשנו אזור חיתוך עם יחס גובה-רוחב של 1.77, והקואורדינטות של הפינה הימנית התחתונה והפינה השמאלית העליונה של מלבן החיתוך הן 0,336, 1100,967.
python crop_hints.py cat.jpeg crop
{
"responses": [
{
"cropHintsAnnotation": {
"cropHints": [
{
"boundingPoly": {
"vertices": [
{
"y": 336
},
{
"x": 1100,
"y": 336
},
{
"x": 1100,
"y": 967
},
{
"y": 967
}
]
},
"confidence": 0.79999995,
"importanceFraction": 0.69
}
]
}
}
]
}
והנה התמונה החתוכה.
כל הכבוד! הפעלתם את Cloud Vision Crop Hints API כדי לקבל את הקואורדינטות האופטימליות של תיבת התוחמת סביב האובייקט הדומיננטי שזוהה בתמונה.