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/uk/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. Виберіть файл, щоб переглянути зображення. Якщо потрібно обертання, оновіть рядок camera.rotation = 0 відповідно і зробіть новий знімок.

💁 Ви можете знайти цей код у папці code-camera/pi.

😀 Ваша програма для камери успішно працює!


Відмова від відповідальності:
Цей документ був перекладений за допомогою сервісу автоматичного перекладу Co-op Translator. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу.