7.7 KiB
לכידת תמונה - חומרה וירטואלית לאינטרנט של הדברים (IoT)
בחלק זה של השיעור, תוסיפו חיישן מצלמה למכשיר ה-IoT הווירטואלי שלכם, ותקראו תמונות ממנו.
חומרה
מכשיר ה-IoT הווירטואלי ישתמש במצלמה מדומה ששולחת תמונות מקבצים או מהמצלמה שלכם.
הוספת מצלמה ל-CounterFit
כדי להשתמש במצלמה וירטואלית, עליכם להוסיף אחת לאפליקציית CounterFit.
משימה - הוספת מצלמה ל-CounterFit
הוסיפו מצלמה לאפליקציית CounterFit.
-
צרו אפליקציית Python חדשה במחשב שלכם בתיקייה בשם
fruit-quality-detectorעם קובץ יחיד בשםapp.pyוסביבת עבודה וירטואלית של Python, והוסיפו את חבילות ה-Pip של CounterFit.⚠️ ניתן לעיין בהוראות ליצירה והגדרה של פרויקט Python ב-CounterFit בשיעור הראשון אם יש צורך.
-
התקינו חבילת Pip נוספת כדי להוסיף CounterFit shim שיכול לתקשר עם חיישני מצלמה על ידי סימולציה של חלק מחבילת Picamera Pip. ודאו שאתם מתקינים זאת מתוך טרמינל עם סביבת העבודה הווירטואלית מופעלת.
pip install counterfit-shims-picamera -
ודאו שאפליקציית ה-Web של CounterFit פועלת.
-
צרו מצלמה:
-
בתיבה Create sensor בלשונית Sensors, פתחו את תיבת Sensor type ובחרו Camera.
-
הגדירו את Name ל-
Picamera. -
בחרו בכפתור Add כדי ליצור את המצלמה.
המצלמה תיווצר ותופיע ברשימת החיישנים.
-
תכנות המצלמה
כעת ניתן לתכנת את מכשיר ה-IoT הווירטואלי להשתמש במצלמה הווירטואלית.
משימה - תכנות המצלמה
תכנתו את המכשיר.
-
ודאו שאפליקציית
fruit-quality-detectorפתוחה ב-VS Code. -
פתחו את קובץ
app.py. -
הוסיפו את הקוד הבא לראש הקובץ
app.pyכדי לחבר את האפליקציה ל-CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000) -
הוסיפו את הקוד הבא לקובץ
app.pyשלכם:import io from counterfit_shims_picamera import PiCameraקוד זה מייבא כמה ספריות נחוצות, כולל המחלקה
PiCameraמתוך הספרייה counterfit_shims_picamera. -
הוסיפו את הקוד הבא מתחת לזה כדי לאתחל את המצלמה:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0קוד זה יוצר אובייקט PiCamera, מגדיר את הרזולוציה ל-640x480. למרות שרזולוציות גבוהות יותר נתמכות, מסווג התמונות עובד על תמונות קטנות בהרבה (227x227), ולכן אין צורך ללכוד ולשלוח תמונות גדולות יותר.
השורה
camera.rotation = 0מגדירה את סיבוב התמונה במעלות. אם יש צורך לסובב את התמונה מהמצלמה או מהקובץ, הגדירו זאת בהתאם. לדוגמה, אם תרצו לשנות תמונה של בננה במצב נוף למצב פורטרט, הגדירוcamera.rotation = 90. -
הוסיפו את הקוד הבא מתחת לזה כדי ללכוד את התמונה כנתונים בינאריים:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)קוד זה יוצר אובייקט
BytesIOלאחסון נתונים בינאריים. התמונה נקראת מהמצלמה כקובץ JPEG ונשמרת באובייקט זה. לאובייקט זה יש אינדיקטור מיקום כדי לדעת היכן הוא נמצא בנתונים כך שניתן לכתוב עוד נתונים בסוף אם יש צורך, ולכן השורהimage.seek(0)מחזירה את המיקום להתחלה כך שכל הנתונים יוכלו להיקרא מאוחר יותר. -
מתחת לזה, הוסיפו את הקוד הבא כדי לשמור את התמונה בקובץ:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())קוד זה פותח קובץ בשם
image.jpgלכתיבה, ואז קורא את כל הנתונים מתוך אובייקטBytesIOוכותב אותם לקובץ.💁 ניתן ללכוד את התמונה ישירות לקובץ במקום לאובייקט
BytesIOעל ידי העברת שם הקובץ לקריאה שלcamera.capture. הסיבה לשימוש באובייקטBytesIOהיא כדי שבשלב מאוחר יותר בשיעור תוכלו לשלוח את התמונה למסווג התמונות שלכם. -
הגדירו את התמונה שהמצלמה ב-CounterFit תצלם. תוכלו להגדיר את Source ל-File, ואז להעלות קובץ תמונה, או להגדיר את Source ל-WebCam, ותמונות יילכדו מהמצלמה שלכם. ודאו שאתם לוחצים על כפתור Set לאחר בחירת תמונה או בחירת המצלמה.
-
תמונה תילכד ותישמר כ-
image.jpgבתיקייה הנוכחית. תוכלו לראות את הקובץ הזה בסייר של VS Code. בחרו בקובץ כדי לצפות בתמונה. אם יש צורך בסיבוב, עדכנו את השורהcamera.rotation = 0בהתאם וצילמו תמונה נוספת.
💁 תוכלו למצוא את הקוד הזה בתיקייה code-camera/virtual-iot-device.
😀 תוכנית המצלמה שלכם הצליחה!
כתב ויתור:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית Co-op Translator. למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.


