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

9.8 KiB

Заснемане на изображение - Виртуален IoT хардуер

В тази част от урока ще добавите камера сензор към вашето виртуално IoT устройство и ще четете изображения от него.

Хардуер

Виртуалното IoT устройство ще използва симулирана камера, която изпраща изображения или от файлове, или от вашата уеб камера.

Добавяне на камера към CounterFit

За да използвате виртуална камера, трябва да добавите такава към приложението CounterFit.

Задача - добавяне на камера към CounterFit

Добавете камерата към приложението CounterFit.

  1. Създайте ново Python приложение на вашия компютър в папка, наречена fruit-quality-detector, с един файл, наречен app.py, и Python виртуална среда, и добавете CounterFit pip пакетите.

    ⚠️ Можете да се обърнете към инструкциите за създаване и настройка на CounterFit Python проект в урок 1, ако е необходимо.

  2. Инсталирайте допълнителен Pip пакет, за да добавите CounterFit shim, който може да комуникира с камера сензори, като симулира някои от Picamera Pip пакета. Уверете се, че го инсталирате от терминал с активирана виртуална среда.

    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 в текущата папка. Ще видите този файл в Explorer на VS Code. Изберете файла, за да видите изображението. Ако е необходимо завъртане, актуализирайте реда camera.rotation = 0, както е необходимо, и направете нова снимка.

💁 Можете да намерите този код в папката code-camera/virtual-iot-device.

😀 Вашата програма за камерата беше успешна!


Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Не носим отговорност за каквито и да било недоразумения или погрешни интерпретации, произтичащи от използването на този превод.