# Извикване на вашия детектор на обекти от 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. Добавете следната директива за включване в началото на файла `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`, който обхожда предсказанията, със следното: ```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); ``` Това обхожда предсказанията, сравнявайки вероятността с прага. Всички предсказания с вероятност, по-висока от прага, се добавят към `list` и се предават на функцията `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.bg.png) > 💁 Можете да намерите този код в папката [code-detect/wio-terminal](../../../../../5-retail/lessons/2-check-stock-device/code-detect/wio-terminal). 😀 Вашата програма за брояч на наличности беше успешна! --- **Отказ от отговорност**: Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Не носим отговорност за каквито и да е недоразумения или погрешни интерпретации, произтичащи от използването на този превод.