|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "3ba7150ffc4a6999f6c3cfb4906ec7df",
|
|
|
"translation_date": "2025-08-27T20:13:41+00:00",
|
|
|
"source_file": "4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md",
|
|
|
"language_code": "el"
|
|
|
}
|
|
|
-->
|
|
|
# Λήψη εικόνας - Εικονικό IoT Υλικό
|
|
|
|
|
|
Σε αυτό το μέρος του μαθήματος, θα προσθέσετε έναν αισθητήρα κάμερας στη συσκευή IoT σας και θα διαβάσετε εικόνες από αυτήν.
|
|
|
|
|
|
## Υλικό
|
|
|
|
|
|
Η εικονική συσκευή IoT θα χρησιμοποιήσει μια προσομοιωμένη κάμερα που στέλνει είτε εικόνες από αρχεία είτε από την κάμερα του υπολογιστή σας.
|
|
|
|
|
|
### Προσθήκη κάμερας στο CounterFit
|
|
|
|
|
|
Για να χρησιμοποιήσετε μια εικονική κάμερα, πρέπει να προσθέσετε μία στην εφαρμογή CounterFit.
|
|
|
|
|
|
#### Εργασία - προσθήκη κάμερας στο CounterFit
|
|
|
|
|
|
Προσθέστε την κάμερα στην εφαρμογή CounterFit.
|
|
|
|
|
|
1. Δημιουργήστε μια νέα εφαρμογή Python στον υπολογιστή σας σε έναν φάκελο που ονομάζεται `fruit-quality-detector` με ένα μόνο αρχείο που ονομάζεται `app.py` και ένα εικονικό περιβάλλον Python, και προσθέστε τα πακέτα pip του CounterFit.
|
|
|
|
|
|
> ⚠️ Μπορείτε να ανατρέξετε [στις οδηγίες για τη δημιουργία και ρύθμιση ενός έργου CounterFit Python στο μάθημα 1, αν χρειαστεί](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md).
|
|
|
|
|
|
1. Εγκαταστήστε ένα επιπλέον πακέτο Pip για να εγκαταστήσετε ένα CounterFit shim που μπορεί να επικοινωνεί με αισθητήρες κάμερας προσομοιώνοντας μερικά από τα [Picamera Pip package](https://pypi.org/project/picamera/). Βεβαιωθείτε ότι το εγκαθιστάτε από ένα τερματικό με ενεργοποιημένο το εικονικό περιβάλλον.
|
|
|
|
|
|
```sh
|
|
|
pip install counterfit-shims-picamera
|
|
|
```
|
|
|
|
|
|
1. Βεβαιωθείτε ότι η διαδικτυακή εφαρμογή CounterFit εκτελείται.
|
|
|
|
|
|
1. Δημιουργήστε μια κάμερα:
|
|
|
|
|
|
1. Στο πλαίσιο *Create sensor* στον πίνακα *Sensors*, ανοίξτε το αναπτυσσόμενο μενού *Sensor type* και επιλέξτε *Camera*.
|
|
|
|
|
|
1. Ορίστε το *Name* σε `Picamera`.
|
|
|
|
|
|
1. Επιλέξτε το κουμπί **Add** για να δημιουργήσετε την κάμερα.
|
|
|
|
|
|

|
|
|
|
|
|
Η κάμερα θα δημιουργηθεί και θα εμφανιστεί στη λίστα αισθητήρων.
|
|
|
|
|
|

|
|
|
|
|
|
## Προγραμματισμός της κάμερας
|
|
|
|
|
|
Η εικονική συσκευή IoT μπορεί τώρα να προγραμματιστεί για να χρησιμοποιεί την εικονική κάμερα.
|
|
|
|
|
|
### Εργασία - προγραμματισμός της κάμερας
|
|
|
|
|
|
Προγραμματίστε τη συσκευή.
|
|
|
|
|
|
1. Βεβαιωθείτε ότι η εφαρμογή `fruit-quality-detector` είναι ανοιχτή στο VS Code.
|
|
|
|
|
|
1. Ανοίξτε το αρχείο `app.py`.
|
|
|
|
|
|
1. Προσθέστε τον παρακάτω κώδικα στην αρχή του `app.py` για να συνδέσετε την εφαρμογή στο CounterFit:
|
|
|
|
|
|
```python
|
|
|
from counterfit_connection import CounterFitConnection
|
|
|
CounterFitConnection.init('127.0.0.1', 5000)
|
|
|
```
|
|
|
|
|
|
1. Προσθέστε τον παρακάτω κώδικα στο αρχείο `app.py`:
|
|
|
|
|
|
```python
|
|
|
import io
|
|
|
from counterfit_shims_picamera import PiCamera
|
|
|
```
|
|
|
|
|
|
Αυτός ο κώδικας εισάγει κάποιες βιβλιοθήκες που χρειάζονται, συμπεριλαμβανομένης της κλάσης `PiCamera` από τη βιβλιοθήκη counterfit_shims_picamera.
|
|
|
|
|
|
1. Προσθέστε τον παρακάτω κώδικα κάτω από αυτόν για να αρχικοποιήσετε την κάμερα:
|
|
|
|
|
|
```python
|
|
|
camera = PiCamera()
|
|
|
camera.resolution = (640, 480)
|
|
|
camera.rotation = 0
|
|
|
```
|
|
|
|
|
|
Αυτός ο κώδικας δημιουργεί ένα αντικείμενο PiCamera, ορίζει την ανάλυση σε 640x480. Παρόλο που υποστηρίζονται υψηλότερες αναλύσεις, ο ταξινομητής εικόνας λειτουργεί με πολύ μικρότερες εικόνες (227x227), οπότε δεν υπάρχει λόγος να καταγράψετε και να στείλετε μεγαλύτερες εικόνες.
|
|
|
|
|
|
Η γραμμή `camera.rotation = 0` ορίζει την περιστροφή της εικόνας σε μοίρες. Αν χρειάζεται να περιστρέψετε την εικόνα από την κάμερα ή το αρχείο, ορίστε την ανάλογα. Για παράδειγμα, αν θέλετε να αλλάξετε την εικόνα μιας μπανάνας από κάμερα σε οριζόντια θέση σε κατακόρυφη, ορίστε `camera.rotation = 90`.
|
|
|
|
|
|
1. Προσθέστε τον παρακάτω κώδικα κάτω από αυτόν για να καταγράψετε την εικόνα ως δυαδικά δεδομένα:
|
|
|
|
|
|
```python
|
|
|
image = io.BytesIO()
|
|
|
camera.capture(image, 'jpeg')
|
|
|
image.seek(0)
|
|
|
```
|
|
|
|
|
|
Αυτός ο κώδικας δημιουργεί ένα αντικείμενο `BytesIO` για την αποθήκευση δυαδικών δεδομένων. Η εικόνα διαβάζεται από την κάμερα ως αρχείο JPEG και αποθηκεύεται σε αυτό το αντικείμενο. Αυτό το αντικείμενο έχει έναν δείκτη θέσης για να γνωρίζει πού βρίσκεται στα δεδομένα, ώστε να μπορεί να προστεθεί περισσότερα δεδομένα στο τέλος αν χρειαστεί, οπότε η γραμμή `image.seek(0)` μετακινεί αυτή τη θέση πίσω στην αρχή ώστε όλα τα δεδομένα να μπορούν να διαβαστούν αργότερα.
|
|
|
|
|
|
1. Κάτω από αυτό, προσθέστε τον παρακάτω κώδικα για να αποθηκεύσετε την εικόνα σε ένα αρχείο:
|
|
|
|
|
|
```python
|
|
|
with open('image.jpg', 'wb') as image_file:
|
|
|
image_file.write(image.read())
|
|
|
```
|
|
|
|
|
|
Αυτός ο κώδικας ανοίγει ένα αρχείο που ονομάζεται `image.jpg` για εγγραφή, στη συνέχεια διαβάζει όλα τα δεδομένα από το αντικείμενο `BytesIO` και τα γράφει στο αρχείο.
|
|
|
|
|
|
> 💁 Μπορείτε να καταγράψετε την εικόνα απευθείας σε ένα αρχείο αντί για ένα αντικείμενο `BytesIO` περνώντας το όνομα του αρχείου στην κλήση `camera.capture`. Ο λόγος για τη χρήση του αντικειμένου `BytesIO` είναι ώστε αργότερα σε αυτό το μάθημα να μπορείτε να στείλετε την εικόνα στον ταξινομητή εικόνας σας.
|
|
|
|
|
|
1. Ρυθμίστε την εικόνα που θα καταγράψει η κάμερα στο CounterFit. Μπορείτε είτε να ορίσετε την *Source* σε *File*, στη συνέχεια να ανεβάσετε ένα αρχείο εικόνας, είτε να ορίσετε την *Source* σε *WebCam*, και οι εικόνες θα καταγράφονται από την κάμερα του υπολογιστή σας. Βεβαιωθείτε ότι επιλέξατε το κουμπί **Set** αφού επιλέξετε μια εικόνα ή την κάμερα.
|
|
|
|
|
|

|
|
|
|
|
|
1. Μια εικόνα θα καταγραφεί και θα αποθηκευτεί ως `image.jpg` στον τρέχοντα φάκελο. Θα δείτε αυτό το αρχείο στον εξερευνητή του VS Code. Επιλέξτε το αρχείο για να δείτε την εικόνα. Αν χρειάζεται περιστροφή, ενημερώστε τη γραμμή `camera.rotation = 0` όπως απαιτείται και τραβήξτε άλλη μια φωτογραφία.
|
|
|
|
|
|
> 💁 Μπορείτε να βρείτε αυτόν τον κώδικα στον φάκελο [code-camera/virtual-iot-device](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-camera/virtual-iot-device).
|
|
|
|
|
|
😀 Το πρόγραμμα της κάμερας σας ήταν επιτυχές!
|
|
|
|
|
|
---
|
|
|
|
|
|
**Αποποίηση ευθύνης**:
|
|
|
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. |