# Κάλεσε τον ανιχνευτή αντικειμένων από τη συσκευή IoT σου - Wio Terminal Μόλις ο ανιχνευτής αντικειμένων σου δημοσιευτεί, μπορεί να χρησιμοποιηθεί από τη συσκευή IoT σου. ## Αντιγραφή του έργου ταξινόμησης εικόνων Το μεγαλύτερο μέρος του ανιχνευτή αποθεμάτων σου είναι ίδιο με τον ταξινομητή εικόνων που δημιούργησες σε προηγούμενο μάθημα. ### Εργασία - Αντιγραφή του έργου ταξινόμησης εικόνων 1. Σύνδεσε την ArduCam σου στο Wio Terminal, ακολουθώντας τα βήματα από [το μάθημα 2 του έργου κατασκευής](../../../4-manufacturing/lessons/2-check-fruit-from-device/wio-terminal-camera.md#task---connect-the-camera). Ίσως θελήσεις επίσης να σταθεροποιήσεις την κάμερα σε μια συγκεκριμένη θέση, για παράδειγμα, κρεμώντας το καλώδιο πάνω από ένα κουτί ή κονσέρβα, ή στερεώνοντας την κάμερα σε ένα κουτί με διπλής όψης ταινία. 1. Δημιούργησε ένα ολοκαίνουργιο έργο Wio Terminal χρησιμοποιώντας το PlatformIO. Ονόμασε αυτό το έργο `stock-counter`. 1. Αντέγραψε τα βήματα από [το μάθημα 2 του έργου κατασκευής](../../../4-manufacturing/lessons/2-check-fruit-from-device/README.md#task---capture-an-image-using-an-iot-device) για να τραβήξεις εικόνες από την κάμερα. 1. Αντέγραψε τα βήματα από [το μάθημα 2 του έργου κατασκευής](../../../4-manufacturing/lessons/2-check-fruit-from-device/README.md#task---classify-images-from-your-iot-device) για να καλέσεις τον ταξινομητή εικόνων. Το μεγαλύτερο μέρος αυτού του κώδικα θα επαναχρησιμοποιηθεί για την ανίχνευση αντικειμένων. ## Τροποποίηση του κώδικα από ταξινομητή σε ανιχνευτή εικόνων Ο κώδικας που χρησιμοποίησες για την ταξινόμηση εικόνων είναι πολύ παρόμοιος με τον κώδικα για την ανίχνευση αντικειμένων. Η κύρια διαφορά είναι το URL που καλείται, το οποίο έλαβες από το Custom Vision, και τα αποτελέσματα της κλήσης. ### Εργασία - Τροποποίηση του κώδικα από ταξινομητή σε ανιχνευτή εικόνων 1. Πρόσθεσε την παρακάτω οδηγία `include` στην κορυφή του αρχείου `main.cpp`: ```cpp #include ``` 1. Μετονόμασε τη συνάρτηση `classifyImage` σε `detectStock`, τόσο το όνομα της συνάρτησης όσο και την κλήση της στη συνάρτηση `buttonPressed`. 1. Πάνω από τη συνάρτηση `detectStock`, δήλωσε ένα κατώφλι για να φιλτράρεις οποιαδήποτε ανίχνευση έχει χαμηλή πιθανότητα: ```cpp const float threshold = 0.3f; ``` Σε αντίθεση με έναν ταξινομητή εικόνων που επιστρέφει μόνο ένα αποτέλεσμα ανά ετικέτα, ο ανιχνευτής αντικειμένων θα επιστρέψει πολλαπλά αποτελέσματα, οπότε οποιαδήποτε με χαμηλή πιθανότητα πρέπει να φιλτραριστούν. 1. Πάνω από τη συνάρτηση `detectStock`, δήλωσε μια συνάρτηση για την επεξεργασία των προβλέψεων: ```cpp void processPredictions(std::vector &predictions) { for(JsonVariant prediction : predictions) { String tag = prediction["tagName"].as(); float probability = prediction["probability"].as(); char buff[32]; sprintf(buff, "%s:\t%.2f%%", tag.c_str(), probability * 100.0); Serial.println(buff); } } ``` Αυτή λαμβάνει μια λίστα προβλέψεων και τις εκτυπώνει στην οθόνη σειριακής επικοινωνίας. 1. Στη συνάρτηση `detectStock`, αντικατάστησε το περιεχόμενο του `for` loop που διατρέχει τις προβλέψεις με το εξής: ```cpp std::vector passed_predictions; for(JsonVariant prediction : predictions) { float probability = prediction["probability"].as(); if (probability > threshold) { passed_predictions.push_back(prediction); } } processPredictions(passed_predictions); ``` Αυτό διατρέχει τις προβλέψεις, συγκρίνοντας την πιθανότητα με το κατώφλι. Όλες οι προβλέψεις που έχουν πιθανότητα μεγαλύτερη από το κατώφλι προστίθενται σε μια `λίστα` και περνούν στη συνάρτηση `processPredictions`. 1. Ανέβασε και εκτέλεσε τον κώδικά σου. Στρέψε την κάμερα σε αντικείμενα σε ένα ράφι και πάτησε το κουμπί C. Θα δεις την έξοδο στην οθόνη σειριακής επικοινωνίας: ```output Connecting to WiFi.. Connected! Image captured Image read to buffer with length 17416 tomato paste: 35.84% tomato paste: 35.87% tomato paste: 34.11% tomato paste: 35.16% ``` > 💁 Ίσως χρειαστεί να προσαρμόσεις το `threshold` σε μια κατάλληλη τιμή για τις εικόνες σου. Θα μπορείς να δεις την εικόνα που τραβήχτηκε και αυτές τις τιμές στην καρτέλα **Predictions** στο Custom Vision. ![4 κονσέρβες τοματοπολτού σε ένα ράφι με προβλέψεις για τις 4 ανιχνεύσεις: 35.8%, 33.5%, 25.7% και 16.6%](../../../../../translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.el.png) > 💁 Μπορείς να βρεις αυτόν τον κώδικα στον φάκελο [code-detect/wio-terminal](../../../../../5-retail/lessons/2-check-stock-device/code-detect/wio-terminal). 😀 Το πρόγραμμα καταμέτρησης αποθεμάτων σου ήταν επιτυχές! --- **Αποποίηση ευθύνης**: Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.