Установка OpenCV 3 на Raspberry Pi 3

OpenCV — это популярная библиотека функций машинного зрения, которые позволяют роботам распознавать объекты окружающего мира. OpenCV применяют для навигации, обнаружения препятствий, распознавания лиц и жестов.

В этой статье будет предложена пошаговая инструкция по установке OpenCV на одноплатный компьютер Raspberry Pi 3. Также эта статья предваряет серию уроков, направленных на освоение базовых функций OpenCV.

Шаг 1. Свободное место

OpenCV и различные вспомогательные пакеты в сумме занимают достаточно много места. Настоятельно рекомендуется использовать SD-карту размером не менее 16 Гб.

Первое, что необходимо сделать перед установкой OpenCV — расширить файловую систему на весь объём SD-карты. Делается это с помощью меню настройки Raspbian. Заходим в терминал и вводим команду:

$ sudo raspi-config

Откроется меню, в котором нужно выбрать самый верхний пункт:

Установка OpenCV 3 на Raspberry Pi 3

Жмем Enter, а затем кнопку <Finish>. После этого перезапускаем систему командой:

$ sudo reboot

Если у вас SD-карта размером всего 8 Гб,  можно удалить что-нибудь лишнее, например пакет wolfram-engine.

$ sudo apt-get purge wolfram-engine

Эта операция освободит дополнительные 700 Мб места.

Шаг 2. Установка зависимостей

Для полноценной работы с OpenCV нам потребуется обновить существующие пакеты и установить ряд новых. Начнем с обновления.

$ sudo apt-get update
$ sudo apt-get upgrade

В зависимости от скорости интернета, данные операции займут около 5-10 минут. Далее устанавливаем в систему cmake и еще несколько полезных штук:

$ sudo apt-get install build-essential cmake pkg-config

Следом пакеты для работы с известными форматами изображений:

$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

Пакеты для работы с видео:

$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev

Пакеты для создания простых экранных форм. Это все тоже потом понадобится.

$ sudo apt-get install libgtk2.0-dev

Специальные ускоренные операции над матрицами.

$ sudo apt-get install libatlas-base-dev gfortran

Заголовочные файлы языка python версий 2.7 и 3

$ sudo apt-get install python2.7-dev python3-dev

Шаг 3. Загрузка OpenCV из репозитория

Сначала скачаем архив с самим OpenCV. Для этого перейдем в папку /home/pi/Downloads:

$ cd ~/Downloads

Загрузим архив с помощью wget и распакуем unzip-ом:

$ wget -O opencv.zip https://github.com/opencv/opencv/archive/master.zip
$ unzip opencv.zip

Следом скачаем пакет с дополнительной всячиной — opencv_contrib.

$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/master.zip
$ unzip opencv_contrib.zip

Шаг 4. Виртуальное окружение

Перед дальнейшей установкой OpenCV, мы немного наведем порядок. Создадим виртуальное окружение, которое оградит наши дальнейшие эксперименты от основной части операционной системы. Это полезно, на случай если потребуется удалить текущую версию opencv и установить новую.

Начнем с установки менеджера пакетов pip:

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py

Затем установим менеджер виртуального окружения:

$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf ~/.cache/pip

Добавим пару строчек в профиль пользователя, который хранится в файле ~/.profile:

$ echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile
$ echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile
$ echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile

Теперь нужно сделать следующие три шага:

  1. закрыть все окна терминалов
  2. разлогиниться
  3. снова залогиниться
  4. открыть терминал и ввести команду:
    $ source ~/.profile

Примечание. Вообще, эту команду теперь рекомендуется вводить при каждом входе в систему.

Далее создаем виртуальное окружение с именем «cv»:

$ mkvirtualenv cv -p python3

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

$ sudo reboot

Откроем терминал и зайдем в окружение:

$ source ~/.profile
$ workon cv

Индикатором того, что мы находимся в виртуальном окружении будет префикс (cv) в начале командной строки.

Установка OpenCV 3 на Raspberry Pi 3

Последнее, что осталось сделать перед сборкой OpenCV — установка математического пакета NumPy:

$ pip install numpy

Шаг 5. Компиляция и установка OpenCV

Находясь в ранее созданном виртуальном окружении, зайдем в папку с исходными кодами OpenCV и выполним команды:

$ cd ~/Downloads/opencv-master
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
 -D CMAKE_INSTALL_PREFIX=/usr/local \
 -D INSTALL_PYTHON_EXAMPLES=ON \
 -D OPENCV_EXTRA_MODULES_PATH=~/Downloads/opencv_contrib-master/modules
 -D BUILD_EXAMPLES=ON ..

В конце процедуры появится список компонентов OpenCV, готовых к установке.

Установка OpenCV 3 на Raspberry Pi 3

Красным выделена секция, посвященная python.

Ну а теперь само интересное — сборка бинарников. Не выходя из текущей папки, запускаем команду make:

$ make -j4

j4 означает, что мы будем собирать пакет используя все 4 ядра Raspberry Pi. Это сильно ускорит процедуру, но даже при таких условиях сборка займет около полутора часов.

Сборка должна завершиться примерно таким вот отчетом:

Установка OpenCV 3 на Raspberry Pi 3. Завершение сборки

Примечание. Лично у меня, во время сборки система пару раз зависала наглухо. То есть даже мышь не шевелилась. Помогло выключение/включение питания и повторный запуск сборки с ключом -j2.

Последнее, что нужно сделать — установить собранный бинарник в папку с python:

$ sudo make install
$ sudo ldconfig

Шаг 6. Завершение установки

После установки, в рабочей папке python появится файл cv2.cpython-34m.so, который нужно переименовать во что-то более благозвучное:

$ cd /usr/local/lib/python3.4/site-packages/
$ sudo mv cv2.cpython-34m.so cv2.so

Чтобы мы могли пользоваться OpenCV, находясь в виртуальном окружении, сделаем там ссылку на получившийся cv2.so:

$ cd ~/.virtualenvs/cv/lib/python3.4/site-packages/
$ ln -s /usr/local/lib/python3.4/site-packages/cv2.so cv2.so

Шаг 7. Проверка

Чтобы проверить правильность установки, зайдем в виртуальное окружение, запустим интерпретатор языка python и попробуем импортировать модуль cv2:

$ source ~/.profile 
$ workon cv
$ python
>>> import cv2
>>> cv2.__version__
'3.1.0'
>>>

Вот и всё — OpenCV установлен успешно! В следующих уроках мы будем разбираться с обработкой изображения с видеокамеры, применительно к робототехнике.


Изменено: