קהל
המטרה של המדריך הזה היא לעזור לכם לפתח אפליקציות באמצעות התכונה Crop Hints (הצעות לחיתוך) של Vision API. ההנחה היא שאתם מכירים מבנים וטכניקות בסיסיים בתכנות. עם זאת, גם אם אתם מתחילים בתכנות, תוכלו לעקוב אחרי ההדרכה הזו ולהריץ אותה בלי קושי, ואז להשתמש במסמכי העיון של Vision API כדי ליצור אפליקציות בסיסיות.
במדריך הזה נסביר איך ליצור אפליקציה ל-Vision API, ואיך לבצע קריאה ל-Vision API כדי להשתמש בתכונה 'הצעות לחיתוך'.
דרישות מוקדמות
- מגדירים פרויקט 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לקובץ I/O
ייבוא אחר:
- המחלקות
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 Reference.
שימוש בתשובה כדי לחתוך או לצייר את תיבת התוחמת של הרמז
אחרי שהפעולה תושלם בהצלחה, תגובת ה-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 כדי לקבל את הקואורדינטות של תיבת התוחמת האופטימלית סביב האובייקט הדומיננטי שזוהה בתמונה.