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/pi-camera.md

12 KiB

Заснемане на изображение - Raspberry Pi

В тази част от урока ще добавите камера към вашия Raspberry Pi и ще прочетете изображения от нея.

Хардуер

Raspberry Pi се нуждае от камера.

Камерата, която ще използвате, е Raspberry Pi Camera Module. Тази камера е проектирана да работи с Raspberry Pi и се свързва чрез специален конектор на устройството.

💁 Тази камера използва Camera Serial Interface, протокол от Mobile Industry Processor Interface Alliance, известен като MIPI-CSI. Това е специализиран протокол за предаване на изображения.

Свързване на камерата

Камерата може да бъде свързана към Raspberry Pi с помощта на лентов кабел.

Задача - свържете камерата

Камера за Raspberry Pi

  1. Изключете захранването на Raspberry Pi.

  2. Свържете лентовия кабел, който идва с камерата, към нея. За да направите това, внимателно издърпайте черния пластмасов клипс в държача, така че да се отвори леко, след което плъзнете кабела в гнездото, като синята страна е обърната настрани от обектива, а металните пинове са обърнати към обектива. След като кабелът е напълно вкаран, натиснете черния пластмасов клипс обратно на мястото му.

    Можете да намерите анимация, показваща как да отворите клипса и да поставите кабела, в документацията за започване с камерата на Raspberry Pi.

    Лентовият кабел, поставен в модула на камерата

  3. Свалете Grove Base Hat от Raspberry Pi.

  4. Прекарайте лентовия кабел през отвора за камерата в Grove Base Hat. Уверете се, че синята страна на кабела е обърната към аналоговите портове, обозначени като A0, A1 и т.н.

    Лентовият кабел, преминаващ през Grove Base Hat

  5. Поставете лентовия кабел в порта за камерата на Raspberry Pi. Отново издърпайте черния пластмасов клипс нагоре, поставете кабела и след това натиснете клипса обратно. Синята страна на кабела трябва да е обърната към USB и Ethernet портовете.

    Лентовият кабел, свързан към порта за камерата на Raspberry Pi

  6. Поставете отново Grove Base Hat.

Програмиране на камерата

Сега Raspberry Pi може да бъде програмиран да използва камерата с помощта на Python библиотеката PiCamera.

Задача - активирайте режим за стара камера

За съжаление, с пускането на Raspberry Pi OS Bullseye, софтуерът за камерата, който идва с операционната система, беше променен, което означава, че по подразбиране PiCamera вече не работи. Работи се по замяна, наречена PiCamera2, но тя все още не е готова за използване.

За момента можете да настроите вашия Raspberry Pi в режим за стара камера, за да позволите на PiCamera да работи. Портът за камерата също е деактивиран по подразбиране, но включването на софтуера за стара камера автоматично активира порта.

  1. Включете Raspberry Pi и изчакайте да се зареди.

  2. Стартирайте VS Code, директно на Raspberry Pi или чрез разширението Remote SSH.

  3. Изпълнете следните команди от терминала:

    sudo raspi-config nonint do_legacy 0
    sudo reboot
    

    Това ще активира настройка за включване на софтуера за стара камера и ще рестартира Raspberry Pi, за да влязат промените в сила.

  4. Изчакайте Raspberry Pi да се рестартира, след което стартирайте отново VS Code.

Задача - програмирайте камерата

Програмирайте устройството.

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

  2. Отворете тази папка в VS Code.

  3. За да взаимодействате с камерата, можете да използвате Python библиотеката PiCamera. Инсталирайте пакета с Pip с помощта на следната команда:

    pip3 install picamera
    
  4. Добавете следния код във файла app.py:

    import io
    import time
    from picamera import PiCamera
    

    Този код импортира необходимите библиотеки, включително библиотеката PiCamera.

  5. Добавете следния код под този, за да инициализирате камерата:

    camera = PiCamera()
    camera.resolution = (640, 480)
    camera.rotation = 0
    
    time.sleep(2)
    

    Този код създава обект PiCamera и задава резолюцията на 640x480. Въпреки че се поддържат по-високи резолюции (до 3280x2464), класификаторът на изображения работи с много по-малки изображения (227x227), така че няма нужда да се заснемат и изпращат по-големи изображения.

    Линията camera.rotation = 0 задава ротацията на изображението. Лентовият кабел влиза в долната част на камерата, но ако камерата ви е завъртяна, за да улесни насочването към обекта, който искате да класифицирате, можете да промените тази линия на броя градуси на ротация.

    Камерата, висяща над кенче

    Например, ако окачите лентовия кабел над нещо, така че да е в горната част на камерата, задайте ротацията на 180:

    camera.rotation = 180
    

    Камерата се нуждае от няколко секунди, за да стартира, затова е добавена линията time.sleep(2).

  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. Насочете камерата към нещо и изпълнете този код.

  9. Изображение ще бъде заснето и запазено като image.jpg в текущата папка. Ще видите този файл в VS Code Explorer. Изберете файла, за да видите изображението. Ако е необходимо завъртане, актуализирайте линията camera.rotation = 0 и направете нова снимка.

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

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


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