Подключение Raspberry Pi камеры и инсталляция OpenCV (Connecting a Raspberry Pi camera and OpenCV installing )

Автор: | 03.03.2020

Подключение камеры к Raspberry Pi
Примеры подключения камеры через Python
Инсталляция  OpenCV
Запуск OpenCV программ на Python
Полезные ссылки

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

Приобретаю недорогую камеру для Raspberry Pi OV5647 через интернет.  Подключаю камеру к ранее установленному микрокомпьютеру Raspberry Pi B4Gb.

Для испытания использую встроенные утилиты raspistill и raspivid, которые вводятся в командной строке (command in the Terminal) и служат для захвата фото и видео соответственно.

raspistill -vf -hf -o cam2.jpg


Примеры подключения камеры через Python

Пример 1. Видеозахват камерой на 10 сек.

# подключаем необходимые библиотеки
from picamera import PiCamera
from time import sleep
# создаём объект для работы с камерой
camera = PiCamera()
# запускаем просмотр сигнала с камеры на экране поверх всех окон
camera.start_preview()
# 10 секунд смотрим на экран
sleep(10)
# выключаем просмотр
camera.stop_preview()

Пример 2. Сохраняем фотографию с камеры

from picamera import PiCamera
from time import sleep
camera = PiCamera() 
camera.start_preview()
# даём камере три секунды на автофокусировку 
sleep(3)
# делаем снимок и сохраняем его на рабочий стол
camera.capture('/home/pi/Desktop/image.jpg')
camera.stop_preview()

Пример 3. Режим видеокамеры — снимаем минутный ролик

from picamera import PiCamera
from time import sleep 
camera = PiCamera() 
camera.start_preview() 
# Начинаем запись видеофайла
camera.start_recording('/home/pi/Desktop/video.h264') 
# Минуту пишем потоковое видео
camera.wait_recording(60)
camera.stop_recording()
camera.stop_preview()

Подробнее см. Настройка и примеры работы камер для Raspberry Pi.

Инсталляция  OpenCV

Сначала установку OpenCV проводил в соответствии инструкцией, изложенной в статье Raspberry Pi 3: OpenCV + Python (#1) — установка библиотеки для использования с Python, только в тексте ряда команд изменял OpenCV 3.4.0 на OpenCV 4.2.0 (последняя из версий).

При инсталляции задействовал только одно ядро (make -j1), чтобы не перегревался процессор.  После ввода команды make -j1 можно  заняться другими делами, длительность инсталляции более 3 часов.

Для проверки, что инсталляция прошла успешно, в оболочке Shell редактора Thornny запустил пару строк:

>> import cv2
>>> cv2.__version__
‘4.2.0’
>>>

Следующий тест проводил с приложением:

# import the necessary packages
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
# initialize the camera and grab a reference to the raw camera capture
camera = PiCamera()
rawCapture = PiRGBArray(camera)
# allow the camera to warmup
time.sleep(0.1)
# grab an image from the camera
camera.capture(rawCapture, format="bgr")
image = rawCapture.array
# display the image on screen and wait for a keypress
cv2.imshow("Image", image)
cv2.waitKey(0)

Приложение остановилось на  cv2.imshow… , получил error со следующим текстом: ...install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvShowImage…

Долго искал в сети способ, как избавиться от этой ошибки, наконец нашел (см. Ошибка при выполнении opencv в ubuntu).  Удалил папку OpenCV со всем содержимым. Затем заново выполнил инсталляцию OpenCV в следующей последовательности:

  1. git clone https://github.com/opencv/opencv.git
  2. cd ~/opencv
  3. mkdir release
  4. cd release
  5. cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
  6. make -j1
  7. sudo make install
  8. sudo ldconfig

Инсталляция закончилась успешно — приложение запустилось.

Не у всех приложение запускается гладко. Комментарий посетителя сайта: «На 3 шаге (mkdir release) получаю ошибку – permission denied».  Ему помогло “sudo mkdir release”.

Определил, какая версия установилась:

>> import cv2
>>> cv2.__version__
‘4.3.0-pre’
>>>

Возможно, эта версия OpenCV установилась бы без ошибки и по первой инструкции. Такое предположение не проверял, поскольку слишком много времени занимает инсталляция (около 4-х часов).

Запуск OpenCV программ на Python

В статье Обнаружение лица и выделение характерных точек. приводятся две программы, в которых используется OpenCV:

Обе программы тестировались из Visual Studio редактора в операционной системе Windows10. При запуске второй программы подключалась web камера, встроенная в ноутбук.

Эти программы запускаются и на Raspberry Pi (практически без изменения кода). Необходимо лишь загрузить предварительно обученную модель для фронтального распознавания лиц  haarcascade_frontalface_default.xml. и файл изображения test1.jpg (для запуска первой программы). Загруженные файлы помещаются в рабочий каталог, где находятся и файлы кода (с расширением .py).

В папке /home/pi/opencv/data находятся различные каскады Хаара

Изображение с Raspberry Pi камеры получается перевернутым. Как привести его в нормальное состояние рассмотрено в статье Основные операции с изображениями в OpenCV 3 Python.

В папке /home/pi/opencv/ samples/python вы можете найти еще около 20 приложений с применением OpenCV.

Инсталляция библиотек

См. Установка и использование модулей (библиотек) Python

Полезные ссылки: