You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/he/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md

7.7 KiB

לכידת תמונה - חומרה וירטואלית לאינטרנט של הדברים (IoT)

בחלק זה של השיעור, תוסיפו חיישן מצלמה למכשיר ה-IoT הווירטואלי שלכם, ותקראו תמונות ממנו.

חומרה

מכשיר ה-IoT הווירטואלי ישתמש במצלמה מדומה ששולחת תמונות מקבצים או מהמצלמה שלכם.

הוספת מצלמה ל-CounterFit

כדי להשתמש במצלמה וירטואלית, עליכם להוסיף אחת לאפליקציית CounterFit.

משימה - הוספת מצלמה ל-CounterFit

הוסיפו מצלמה לאפליקציית CounterFit.

  1. צרו אפליקציית Python חדשה במחשב שלכם בתיקייה בשם fruit-quality-detector עם קובץ יחיד בשם app.py וסביבת עבודה וירטואלית של Python, והוסיפו את חבילות ה-Pip של CounterFit.

    ⚠️ ניתן לעיין בהוראות ליצירה והגדרה של פרויקט Python ב-CounterFit בשיעור הראשון אם יש צורך.

  2. התקינו חבילת Pip נוספת כדי להוסיף CounterFit shim שיכול לתקשר עם חיישני מצלמה על ידי סימולציה של חלק מחבילת Picamera Pip. ודאו שאתם מתקינים זאת מתוך טרמינל עם סביבת העבודה הווירטואלית מופעלת.

    pip install counterfit-shims-picamera
    
  3. ודאו שאפליקציית ה-Web של CounterFit פועלת.

  4. צרו מצלמה:

    1. בתיבה Create sensor בלשונית Sensors, פתחו את תיבת Sensor type ובחרו Camera.

    2. הגדירו את Name ל-Picamera.

    3. בחרו בכפתור Add כדי ליצור את המצלמה.

    הגדרות המצלמה

    המצלמה תיווצר ותופיע ברשימת החיישנים.

    המצלמה שנוצרה

תכנות המצלמה

כעת ניתן לתכנת את מכשיר ה-IoT הווירטואלי להשתמש במצלמה הווירטואלית.

משימה - תכנות המצלמה

תכנתו את המכשיר.

  1. ודאו שאפליקציית fruit-quality-detector פתוחה ב-VS Code.

  2. פתחו את קובץ app.py.

  3. הוסיפו את הקוד הבא לראש הקובץ app.py כדי לחבר את האפליקציה ל-CounterFit:

    from counterfit_connection import CounterFitConnection
    CounterFitConnection.init('127.0.0.1', 5000)
    
  4. הוסיפו את הקוד הבא לקובץ app.py שלכם:

    import io
    from counterfit_shims_picamera import PiCamera
    

    קוד זה מייבא כמה ספריות נחוצות, כולל המחלקה PiCamera מתוך הספרייה counterfit_shims_picamera.

  5. הוסיפו את הקוד הבא מתחת לזה כדי לאתחל את המצלמה:

    camera = PiCamera()
    camera.resolution = (640, 480)
    camera.rotation = 0
    

    קוד זה יוצר אובייקט PiCamera, מגדיר את הרזולוציה ל-640x480. למרות שרזולוציות גבוהות יותר נתמכות, מסווג התמונות עובד על תמונות קטנות בהרבה (227x227), ולכן אין צורך ללכוד ולשלוח תמונות גדולות יותר.

    השורה camera.rotation = 0 מגדירה את סיבוב התמונה במעלות. אם יש צורך לסובב את התמונה מהמצלמה או מהקובץ, הגדירו זאת בהתאם. לדוגמה, אם תרצו לשנות תמונה של בננה במצב נוף למצב פורטרט, הגדירו camera.rotation = 90.

  6. הוסיפו את הקוד הבא מתחת לזה כדי ללכוד את התמונה כנתונים בינאריים:

    image = io.BytesIO()
    camera.capture(image, 'jpeg')
    image.seek(0)
    

    קוד זה יוצר אובייקט BytesIO לאחסון נתונים בינאריים. התמונה נקראת מהמצלמה כקובץ JPEG ונשמרת באובייקט זה. לאובייקט זה יש אינדיקטור מיקום כדי לדעת היכן הוא נמצא בנתונים כך שניתן לכתוב עוד נתונים בסוף אם יש צורך, ולכן השורה image.seek(0) מחזירה את המיקום להתחלה כך שכל הנתונים יוכלו להיקרא מאוחר יותר.

  7. מתחת לזה, הוסיפו את הקוד הבא כדי לשמור את התמונה בקובץ:

    with open('image.jpg', 'wb') as image_file:
        image_file.write(image.read())
    

    קוד זה פותח קובץ בשם image.jpg לכתיבה, ואז קורא את כל הנתונים מתוך אובייקט BytesIO וכותב אותם לקובץ.

    💁 ניתן ללכוד את התמונה ישירות לקובץ במקום לאובייקט BytesIO על ידי העברת שם הקובץ לקריאה של camera.capture. הסיבה לשימוש באובייקט BytesIO היא כדי שבשלב מאוחר יותר בשיעור תוכלו לשלוח את התמונה למסווג התמונות שלכם.

  8. הגדירו את התמונה שהמצלמה ב-CounterFit תצלם. תוכלו להגדיר את Source ל-File, ואז להעלות קובץ תמונה, או להגדיר את Source ל-WebCam, ותמונות יילכדו מהמצלמה שלכם. ודאו שאתם לוחצים על כפתור Set לאחר בחירת תמונה או בחירת המצלמה.

    CounterFit עם קובץ מוגדר כמקור תמונה, ומצלמת רשת שמראה אדם מחזיק בננה בתצוגה מקדימה של המצלמה

  9. תמונה תילכד ותישמר כ-image.jpg בתיקייה הנוכחית. תוכלו לראות את הקובץ הזה בסייר של VS Code. בחרו בקובץ כדי לצפות בתמונה. אם יש צורך בסיבוב, עדכנו את השורה camera.rotation = 0 בהתאם וצילמו תמונה נוספת.

💁 תוכלו למצוא את הקוד הזה בתיקייה code-camera/virtual-iot-device.

😀 תוכנית המצלמה שלכם הצליחה!


כתב ויתור:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית Co-op Translator. למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.