Настройка Python Picamera2 на Raspberry Pi (фото и видеозапись)

Это руководство является введением в библиотеку Picamera2 на Python для платы Raspberry Pi. В нём описано, как установить Picamera2, сделать фотографию и записать видео в файл формата .mp4. Данное руководство совместимо с Raspberry Pi Camera V2 и V3.

Настройка Python Picamera2 на Raspberry Pi — съёмка фото и запись видео

В этом руководстве рассматриваются следующие темы:

  1. Библиотека Picamera2 для Python

  2. Подготовка камеры Raspberry Pi

  3. Picamera2: пример съёмки фото — Python-скрипт

  4. Picamera2: пример записи видео — Python-скрипт

Предварительные требования

Прежде чем продолжить, убедитесь, что выполнены следующие предварительные требования:

Библиотека Picamera2 для Python

Picamera2 — это библиотека Python для взаимодействия с камерой Raspberry Pi. Она основана на стеке камер libcamera и поддерживается организацией Raspberry Pi Foundation. Использование старой библиотеки PiCamera с последними версиями Raspberry Pi OS больше не рекомендуется.

Библиотека Picamera2 поддерживается на всех моделях Raspberry Pi — от Pi Zero до RPi 5.

Установка библиотеки Picamera2

Установив SSH-соединение с Raspberry Pi, обновите систему Raspberry Pi, если доступны обновления. Выполните следующую команду:

sudo apt update && sudo apt upgrade -y

Выполните следующую команду, чтобы установить библиотеку Picamera2 на Raspberry Pi:

sudo apt install -y python3-picamera2

Настоятельно рекомендуется устанавливать и обновлять Picamera2 с помощью команды apt, описанной выше, — это позволит избежать проблем совместимости. Автор столкнулся со множеством ошибок компиляции при попытке установить библиотеку Picamera2 с помощью команды pip в виртуальном окружении.

Подготовка камеры Raspberry Pi

Камера Raspberry Pi — это небольшой и недорогой модуль камеры, совместимый с платами Raspberry Pi. Хотя для большинства проектов её возможностей достаточно, :doc:`некоторые USB-камеры обеспечивают лучшее качество изображения </raspberry/rnt/set-up-usb-camera-opencv-raspberry-pi/index>`_. В этом руководстве мы будем использовать модуль камеры Raspberry Pi Camera V2, показанный на следующем изображении:

Модуль камеры Raspberry Pi Camera V2

Это руководство также работает с Raspberry Pi Camera V3, и камера совместима со всеми моделями Raspberry Pi.

Включение модуля камеры Raspberry Pi

Если вы используете последнюю версию Raspberry Pi OS, официальные камеры Raspberry Pi будут обнаружены и включены автоматически.

Подключение камеры

Подключение модуля камеры Raspberry Pi очень простое. При выключенном Pi подключите камеру к порту CSI на Pi, как показано на следующем рисунке.

Raspberry Pi 5 с подключённым модулем камеры Pi Camera V2

Picamera2: пример съёмки фото — Python-скрипт

Съёмка фото с камерой Raspberry Pi очень проста благодаря библиотеке Picamera2 на Python. Создайте новый файл с именем take_photo.py:

nano take_photo.py

Скопируйте следующий код в созданный файл:

from picamera2 import Picamera2, Preview
import time

picam2 = Picamera2()

camera_config = picam2.create_preview_configuration()
picam2.configure(camera_config)

picam2.start_preview(Preview.QTGL)
picam2.start()

time.sleep(2)

picam2.capture_file("test_photo.jpg")

Исходный код на GitHub

Нажмите Ctrl + X, чтобы сохранить файл, затем нажмите Y и Enter.

Разбор скрипта для съёмки фото

Давайте кратко рассмотрим, как работает код.

Начнём с импорта необходимых библиотек.

from picamera2 import Picamera2, Preview
import time

Создайте объект Picamera2() с именем picam2.

picam2 = Picamera2()

Затем сгенерируйте конфигурацию камеры, подходящую для предпросмотра, и настройте систему камеры с этой конфигурацией предпросмотра.

camera_config = picam2.create_preview_configuration()
picam2.configure(camera_config)

Запустите окно предпросмотра.

picam2.start_preview(Preview.QTGL)

Наконец, запустите камеру, подождите две секунды и сделайте снимок. Он будет сохранён с именем файла test_photo.jpg.

picam2.start()

time.sleep(2)

picam2.capture_file("test_photo.jpg")

Запуск скрипта

Запустите скрипт для съёмки фото, выполнив следующую команду в каталоге вашего проекта:

python take_photo.py
Команда Picamera2 Python для съёмки фото

Скрипт делает фотографию с камеры Raspberry Pi и сохраняет её с именем test_photo.jpg. Файл изображения будет сохранён в той же папке, что и Python-скрипт.

Файлы в папке после съёмки фото Picamera2 Python

Вы можете :doc:`получить удалённый доступ к рабочему столу Raspberry Pi </raspberry/rnt/raspberry-pi-remote-desktop-connection-rdp-windows/index>`_ и открыть файл изображения, чтобы просмотреть фотографию.

Результат примера скрипта съёмки фото Picamera2 Python

Picamera2: пример записи видео — Python-скрипт

Следующий Python-скрипт также использует пакет PiCamera для захвата видео в файл формата .mp4. Создайте новый файл с именем record_video.py:

nano capture_video.py

Скопируйте следующий код в созданный файл:

from picamera2 import Picamera2

picam2 = Picamera2()

picam2.start_and_record_video("test_video.mp4", duration=5)

Исходный код на GitHub

Нажмите Ctrl + X, чтобы сохранить файл, затем нажмите Y и Enter.

Разбор скрипта для записи видео

Давайте кратко рассмотрим скрипт.

Начнём с импорта необходимых библиотек.

from picamera2 import Picamera2

Создайте объект Picamera2().

picam2 = Picamera2()

Следующая команда записывает видео длительностью 5 секунд с камеры Raspberry Pi и сохраняет его с именем test_video.mp4. Вы можете изменить скрипт, чтобы поменять имя файла и увеличить продолжительность записи видео.

picam2.start_and_record_video("test_video.mp4", duration=5)

Запуск скрипта

Запустите скрипт для записи видео. Вы можете использовать следующую команду:

python3 capture_video.py
Команда Picamera2 Python для записи видео

Скрипт запишет 5-секундное видео с камеры Raspberry Pi и сохранит его с именем test_video.mp4.

Файлы в папке после записи видео Picamera2 Python

Вы можете получить :doc:`удалённый доступ к рабочему столу Raspberry Pi </raspberry/rnt/raspberry-pi-remote-desktop-connection-rdp-windows/index>`_ и открыть видеофайл с помощью проигрывателя VLC, чтобы просмотреть его.

Результат примера скрипта записи видео Picamera2 Python

Устранение неполадок

  1. Если вы используете Raspberry Pi 3 или более раннюю модель, для работы этого примера скрипта вам необходимо включить Glamor. Для этого выполните команду sudo raspi-config в окне терминала, выберите Advanced Options, а затем включите Glamor graphic acceleration. После этого перезагрузите устройство.

  2. Если вы используете подключение через удалённый рабочий стол, иногда предпросмотр изображения и запись видео будут отображаться размытыми, как на скриншотах ниже. Однако если вы :doc:`скачаете файлы на обычный ПК с Windows или Mac OS </raspberry/rnt/transfer-files-raspberry-pi-filezilla-ftp-mac-os/index>`_, файлы будут в порядке.

Ошибка предпросмотра фото Python Picamera2 Raspberry Pi

Связанный материал: :doc:`Передача файлов на Raspberry Pi и обратно с помощью FileZilla FTP (Windows PC) </raspberry/rnt/transfer-files-raspberry-pi-filezilla-ftp-windows/index>`_

Ошибка предпросмотра видео Python Picamera2 Raspberry Pi

Заключение

В этой статье мы провели краткое введение в работу с камерой Raspberry Pi с помощью библиотеки Picamera2 на Python. Вы узнали, как делать фотографии и записывать видео в файл.

У нас есть другие проекты для Raspberry Pi, которые могут быть вам полезны: