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/el/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md

11 KiB

Λήψη εικόνας - Εικονικό IoT Υλικό

Σε αυτό το μέρος του μαθήματος, θα προσθέσετε έναν αισθητήρα κάμερας στη συσκευή IoT σας και θα διαβάσετε εικόνες από αυτήν.

Υλικό

Η εικονική συσκευή IoT θα χρησιμοποιήσει μια προσομοιωμένη κάμερα που στέλνει είτε εικόνες από αρχεία είτε από την κάμερα του υπολογιστή σας.

Προσθήκη κάμερας στο CounterFit

Για να χρησιμοποιήσετε μια εικονική κάμερα, πρέπει να προσθέσετε μία στην εφαρμογή CounterFit.

Εργασία - προσθήκη κάμερας στο CounterFit

Προσθέστε την κάμερα στην εφαρμογή CounterFit.

  1. Δημιουργήστε μια νέα εφαρμογή Python στον υπολογιστή σας σε έναν φάκελο που ονομάζεται fruit-quality-detector με ένα μόνο αρχείο που ονομάζεται app.py και ένα εικονικό περιβάλλον Python, και προσθέστε τα πακέτα pip του CounterFit.

    ⚠️ Μπορείτε να ανατρέξετε στις οδηγίες για τη δημιουργία και ρύθμιση ενός έργου CounterFit Python στο μάθημα 1, αν χρειαστεί.

  2. Εγκαταστήστε ένα επιπλέον πακέτο Pip για να εγκαταστήσετε ένα CounterFit shim που μπορεί να επικοινωνεί με αισθητήρες κάμερας προσομοιώνοντας μερικά από τα Picamera Pip package. Βεβαιωθείτε ότι το εγκαθιστάτε από ένα τερματικό με ενεργοποιημένο το εικονικό περιβάλλον.

    pip install counterfit-shims-picamera
    
  3. Βεβαιωθείτε ότι η διαδικτυακή εφαρμογή 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. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.