Получение и обработка изображения с камеры Raspberry PI
Для получения и обработки изображений Raspberry с камеры PI предназначен модуль picamera. На новой Raspberry PI первым делом необходимо включить камеру с помощью команды:
sudo raspi-config

После включения камеры нужна перезагрузка Raspberry. Перед написанием программ на Питоне рекомендуем проверить функциональность камеры с помощью инструментов командной строки. Иначе есть риск потери времени в попытках отладить программу, которая не работает из-за того, что некорректно работает сам модуль камеры.
Сделать фотографию можно с помощью команды raspistill -o myphoto.jpg. Данная команда активирует модуль камеры Raspberry PI, показывает окно предпросмотра, и через несколько секунд записывает изображение в указанный файл (myphoto.jpg) в текущем рабочем каталоге. Для использования камеры в программе на Питоне нужно выполнить установку модуля picamera с помощью команды pip install "picamera[array]". Стандартный модуль picamera предоставляет методы для управления камерой, но нам также нужен опциональный подмодуль array для использования функций OpenCV.
В Питоне OpenCV представляет изображения в виде массивов NumPy – подмодуль array позволяет получать NumPy массивы из камеры raspberry PI. Рассмотрим пример программы test_image.py:
# coding=UTF-8
# импорт необходимых пакетов
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
# инициализация объекта для захвата картинки
camera = PiCamera()
rawCapture = PiRGBArray(camera)
# «прогрев» камеры
time.sleep(0.1)
# получаем изображение с камеры
camera.capture(rawCapture, format="bgr")
image = rawCapture.array
# отображаем картинку на экране и ждём нажатия любой клавиши
cv2.imshow("Image", image)
cv2.waitKey(0)
Код можно вписать в любой текстовый редактор, и выполнить с помощью команды python test_image.py. Если всё выполнено правильно – на экране отобразится изображение с камеры:

Теперь рассмотрим программу для обработки видеопотока с камеры.
# coding=UTF-8
# импорт необходимых пакетов
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
# инициализация объекта захвата
camera = PiCamera()
camera.resolution = (640, 480)
camera.framerate = 32
rawCapture = PiRGBArray(camera, size=(640, 480))
# «прогрев» камеры
time.sleep(0.1)
# получаем кадр от камеры
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
# получаем кадр с камеры
image = frame.array
# отображаем кадр на экране
cv2.imshow("Frame", image)
key = cv2.waitKey(1) & 0xFF
# очищаем поток для следующего кадра
rawCapture.truncate(0)
# по клавише `q` выходим из цикла
if key == ord("q"):
break
Код нужно вписать в файл test_video.py и запустить с помощью команды python test_video.py. На экране должен отобразиться видеопоток с камеры:

Last updated
Was this helpful?