Как установить OpenCV на Raspberry Pi 3
OpenCV (библиотека компьютерного зрения с открытым исходным кодом) — это библиотека компьютерного зрения с открытым исходным кодом, имеющая привязки для C ++, Python и Java. Он используется для очень широкого круга приложений, включая анализ медицинских изображений, сшивание изображений улиц, видео наблюдения, обнаружение и распознавание лиц, отслеживание движущихся объектов, извлечение 3D-моделей и многое другое.
OpenCV может использовать преимущества многоядерной обработки и ускорения графического процессора для работы в реальном времени.
В этом руководстве мы объясним, как установить OpenCV на Raspberry Pi.
Содержание
Подготовка
Мы предполагаем, что на Raspberry Pi установлен Raspbian .
Установка OpenCV из репозиториев Raspbian
Модуль OpenCV Python доступен из стандартного репозитория Raspbian. На момент написания в репозиториях стоит версия 3.2, которая не является последней версией.
Чтобы установить модуль OpenCV Python, выполните следующие команды:
sudo apt updatesudo apt install python3-opencv
Приведенная выше команда установит все пакеты, необходимые для запуска OpenCV.
Чтобы проверить установку, импортируйте модуль cv2
и распечатайте версию OpenCV:
python3 -c "import cv2; print(cv2.__version__)"
3.2.0
Если вы хотите установить OpenCV с привязками Python 2, установите пакет python-opencv
.
Установить OpenCV из исходного кода
Рекомендуемый способ установки OpenCV — собрать библиотеку из исходного кода. Таким образом, у вас будет полный контроль над параметрами сборки, а OpenCV будет оптимизирован для вашей системы.
Начните с увеличения пространства подкачки, чтобы избежать зависаний компиляции из-за проблем с памятью:
sudo nano /etc/dphys-swapfile
Измените значение CONF_SWAPSIZE
со 100
по умолчанию на 1024
:
/etc/dphys-swapfile
CONF_SWAPSIZE=1024
Сохраните файл и выполните следующую команду, чтобы изменения вступили в силу:
sudo /etc/init. d/dphys-swapfile restart
Теперь мы можем начать сборку OpenCV. Сначала обновите индекс пакетов и установите инструменты сборки и необходимые зависимости:
sudo apt update
sudo apt install build-essential cmake git pkg-config libgtk-3-dev "libcanberra-gtk*"
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev
sudo apt install libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev opencl-headers
sudo apt install python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev
Создайте каталог сборки , перейдите к нему и клонируйте репозитории OpenCV и OpenCV contrib из Github:
mkdir ~/opencv_build && cd ~/opencv_build
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
На момент написания версия по умолчанию в репозиториях GitHub — 4. 1.1. Если вы хотите установить старую версию OpenCV, перейдите в opencv_contrib
opencv
и opencv_contrib
и запустите git checkout <opencv-version>
.
После клонирования репозиториев создайте временный каталог сборки и перейдите в него:
mkdir -p ~/opencv_build/opencv/build && cd ~/opencv_build/opencv/build
Настройте конфигурацию сборки OpenCV с помощью cmake
:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=OFF -D INSTALL_PYTHON_EXAMPLES=OFF -D OPENCV_GENERATE_PKGCONFIG=ON -D ENABLE_NEON=ON -D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic -D ENABLE_VFPV3=ON -D BUILD_TESTS=OFF -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules -D BUILD_EXAMPLES=OFF ..
Результат будет выглядеть примерно так:
... -- Configuring done -- Generating done -- Build files have been written to: /home/pi/opencv_build/opencv/build
Запустите make
чтобы начать процесс компиляции:
make -j4
Процесс займет некоторое время, около 1-2 часов, в зависимости от модели Raspberry Pi. Если компиляция в какой-то момент не удалась из-за недоступности ресурсов, запустите команду make
раз, и процесс продолжится с того места, где он остановился.
По завершении вы увидите что-то вроде ниже:
... [100%] Linking CXX shared module ../../lib/python3/cv2.cpython-35m-arm-linux-gnueabihf.so [100%] Built target opencv_python3
Последний шаг — установка скомпилированных файлов OpenCV:
sudo make install
... -- Installing: /usr/local/bin/opencv_version -- Set runtime path of "/usr/local/bin/opencv_version" to "/usr/local/lib"
Чтобы проверить, успешно ли установлен OpenCV, введите следующие команды, и вы должны увидеть версию OpenCV:
Библиотека C ++:
pkg-config --modversion opencv4
4. 1.1
Библиотека Python:
python3 -c "import cv2; print(cv2.__version__)"
4.1.1-pre
Очистить
Если у вас мало свободного места на SD-карте, удалите исходные файлы:
rm -rf ~/opencv_build
Использование частой замены может повредить вашу SD-карту. Верните пространство подкачки к исходному размеру:
sudo nano /etc/dphys-swapfile
Измените значение CONF_SWAPSIZE
на 100
:
/etc/dphys-swapfile
CONF_SWAPSIZE=100
Сохраните файл и активируйте изменения:
sudo /etc/init.d/dphys-swapfile restart
Выводы
Мы показали вам, как установить OpenCV на вашу плату Raspberry Pi. Сборка OpenCV из исходного кода дает вам больше гибкости, и это должно быть вашим первым вариантом при установке OpenCV.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии ниже.
Установка OpenCV 3 на Raspberry Pi 3/4
OpenCV — это популярная библиотека функций машинного зрения, которые позволяют роботам распознавать объекты окружающего мира. OpenCV применяют для навигации, обнаружения препятствий, распознавания лиц и жестов.
В этой статье будет предложена пошаговая инструкция по установке OpenCV на одноплатный компьютер Raspberry Pi 3. Также эта статья предваряет серию уроков, направленных на освоение базовых функций OpenCV.
Шаг 1. Свободное место
OpenCV и различные вспомогательные пакеты в сумме занимают достаточно много места. Настоятельно рекомендуется использовать SD-карту размером не менее 16 Гб.
Первое, что необходимо сделать перед установкой OpenCV — расширить файловую систему на весь объём SD-карты. Делается это с помощью меню настройки Raspbian. Заходим в терминал и вводим команду:
$ sudo raspi-config
Откроется меню, в котором нужно выбрать самый верхний пункт:
Жмем 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, мы немного наведем порядок. Создадим виртуальное окружение, которое оградит наши дальнейшие эксперименты от основной части операционной системы.
Начнем с установки менеджера пакетов 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
Теперь нужно сделать следующие три шага:
- закрыть все окна терминалов
- разлогиниться
- снова залогиниться
- открыть терминал и ввести команду:
$ source ~/.profile
Примечание. Вообще, эту команду теперь рекомендуется вводить при каждом входе в систему.
Далее создаем виртуальное окружение с именем «cv»:
$ mkvirtualenv cv -p python3
Чтобы проверить правильность установки виртуального окружения, перезагрузим Raspberry Pi:
$ sudo reboot
Откроем терминал и зайдем в окружение:
$ source ~/. profile $ workon cv
Индикатором того, что мы находимся в виртуальном окружении будет префикс (cv) в начале командной строки.
Последнее, что осталось сделать перед сборкой 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, готовых к установке.
Красным выделена секция, посвященная python.
Ну а теперь само интересное — сборка бинарников. Не выходя из текущей папки, запускаем команду make:
$ make -j4
j4 означает, что мы будем собирать пакет используя все 4 ядра Raspberry Pi. Это сильно ускорит процедуру, но даже при таких условиях сборка займет около полутора часов.
Сборка должна завершиться примерно таким вот отчетом:
Примечание. Лично у меня, во время сборки система пару раз зависала наглухо. То есть даже мышь не шевелилась. Помогло выключение/включение питания и повторный запуск сборки с ключом -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 установлен успешно! В следующих уроках мы будем разбираться с обработкой изображения с видеокамеры, применительно к робототехнике.
Установка OpenCV | Руководство по Raspberry Pi
Ниже я проведу вас через основные шаги, необходимые для того, чтобы OpenCV работал на Raspberry Pi, а также на Ubuntu и Mac.
Содержание
- OpenCV
- Установка предварительных условий
- Установка OpenCV с pip
- Тестирование
- Ошибки?
OpenCV
OpenCV — очень обширная и невероятно мощная библиотека для компьютерного зрения (в режиме реального времени), включая обнаружение объектов, отслеживание движения и калибровку камеры.
Раньше установка OpenCV была очень сложным и долгим процессом, особенно на старых моделях. К счастью, сейчас относительно легко установить OpenCV с помощью pip. Дополнительные сведения см. в статье Адриана Роузброка.
Предварительные требования для установки
Pip — это основной менеджер пакетов для Python, который мы также будем использовать для установки OpenCV. Pip уже должен быть установлен в вашей системе (см. здесь)
Далее, для некоторых версий ОС Raspberry Pi нам может потребоваться установить некоторые дополнительные пакеты. Сначала убедитесь apt-get
полностью обновлен, если ввести в Терминале следующее:
sudo apt-get update
Теперь установите необходимые компоненты:
sudo apt-get install build-essential cmake pkg-config libjpeg-dev libtiff5-dev libjasper-dev libpng-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264- dev libfontconfig1-dev libcairo2-dev libgdk-pixbuf2. 0-dev libpango1.0-dev libgtk2.0-dev libgtk-3-dev libatlas-base-dev gfortran libhdf5-dev libhdf5-serial-dev libhdf5-103 python3-pyqt5 python3 -dev -y
Установите OpenCV с помощью pip
Наконец, мы можем очень просто установить OpenCV с помощью pip. Обратите внимание: если у вас все еще есть python2.7 в вашей системе и вы не работаете с виртуальной средой с python3, вам нужно будет ввести pip3
, а не pip
. Стандартная команда для установки opencv — pip install opencv-contrib-python
, но не запускайте ее сразу (!), поскольку она попытается установить последнюю версию OpenCV, которая не всегда полностью функциональна на Raspberry Pi. Кроме того, установка может занять очень много времени. Поэтому я рекомендую запустить приведенную ниже команду, которая устанавливает последнюю известную рабочую версию. Здесь я использую 4.5.3.56, но может случиться так, что уже доступна более новая стабильная версия:
pip установить opencv-python == 4. 5.3.56
Если вы по-прежнему получаете сообщение об ошибке, такое как Не удалось найти версию, удовлетворяющую требованию opencv-contrib-python (из версий:) Не найдено подходящего дистрибутива для opencv-contrib-python , попробуйте альтернативу использовать apt -получить
вместо пунктов
:
sudo apt-get install python-opencv
Тестирование
Теперь давайте просто убедимся, что OpenCV работает. Откройте окно терминала и введите python3
для запуска Python. Теперь, чтобы убедиться, что вы правильно установили OpenCV, введите:
import cv2 cv2.__версия__
Окно вашего терминала должно выглядеть так:
$ python3 Python 3.7.3 (по умолчанию, 20 декабря 2020 г., 18:57:59) [GCC 8.3.0] в Linux Введите «помощь», «авторское право», «кредиты» или «лицензия» для получения дополнительной информации. >>> импорт cv2 >>> cv2.__версия__ «4.5.3»
Готово!
Ошибки?
Возможно, вы столкнулись с ошибкой. Вот несколько решений:
Если вы получили сообщение об ошибке, некоторые необходимые компоненты недоступны с помощью приведенной выше команды, попробуйте удалить их. Opencv постоянно обновляется, и его необходимые предварительные условия меняются и иногда удаляются.
Если вы получаете сообщение об ошибке «не удалось построить колеса», возможно, ваши колеса и инструменты настройки не полностью обновлены. Чтобы обновить их:
pip install --upgrade pip setuptools wheel
теперь повторите попытку.
Если у вас возникла проблема с импортом cv2, но установка завершилась успешно, попробуйте:
sudo apt-get установить python-opencv pip установить -U numpy
Если у вас возникла проблема с запуском последней версии opencv на Raspberry Pi, иногда может работать запуск python3 с помощью следующей команды:
LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 python3
Если у вас все еще есть проблемы, оставьте комментарий!
Установка OpenCV на Raspberry Pi
В этом руководстве мы проведем вас через процесс настройки OpenCV на Raspberry Pi.
Для успешной установки OpenCV на Raspberry Pi требуется несколько разных шагов и немало терпения.
Для тех, кто не знает, что такое OpenCV. Это библиотека различных программных функций, предназначенных для работы с компьютерным зрением в реальном времени.
Используя компьютерное зрение, вы можете интерпретировать изображения и видео в режиме реального времени. Позволяет относительно легко выполнять такие задачи, как обнаружение движения и распознавание лиц.
Raspberry Pi — отличная платформа для начала изучения OpenCV, а также доступное и маленькое устройство.
Список оборудования
Вот все оборудование, которое мы рекомендуем для этого урока Raspberry Pi OpenCV.
Рекомендуется
Дополнительно
- Чехол Raspberry Pi
- USB-клавиатура
- USB-мышь
Это руководство было протестировано с использованием последней версии Raspbian Buster. Если вы используете более старую версию Raspbian, вы можете использовать наше руководство для обновления до Buster.
Установка пакетов для OpenCV
В этом разделе мы проведем вас через процесс установки всех пакетов, необходимых для компиляции и запуска программного обеспечения OpenCV.
Поскольку для OpenCV требуется так много пакетов на Raspberry Pi, мы установим их за пару шагов.
1. Прежде чем продолжить, мы должны сначала обновить все существующие пакеты.
Вы можете обновить установленные пакеты, выполнив следующие две команды.
2. Теперь мы можем начать процесс установки всех пакетов, необходимых для компиляции OpenCV.
Для запуска выполните приведенную ниже команду. Эта команда установит пакеты, содержащие инструменты, необходимые для компиляции кода OpenCV.
3. Далее мы собираемся установить пакеты, которые добавят поддержку различных форматов изображений и видео в OpenCV.
Установите эти библиотеки на Raspberry Pi с помощью следующей команды.
4. Наш следующий шаг — установить все пакеты, необходимые для интерфейса OpenCV, с помощью приведенной ниже команды.
5. Следующие пакеты необходимы для того, чтобы OpenCV работал с приличной скоростью на Raspberry Pi.
Эти пакеты можно установить, выполнив следующую команду.
6. Вторая последняя партия пакетов, которые нам нужно установить, относится к иерархическому формату данных (HDF5), который OpenCV использует для управления данными.
Установите пакеты HDF5 на свой Pi, используя приведенную ниже команду.
7. Наконец, мы можем установить последние несколько пакетов с помощью приведенной ниже команды.
Эти последние несколько пакетов позволят нам скомпилировать OpenCV с поддержкой Python на нашем Raspberry Pi.
Прежде чем перейти к следующему разделу, убедитесь, что все пакеты успешно установлены.
Подготовка вашего Raspberry Pi к компиляции OpenCV
1. Теперь, когда все необходимые пакеты для компиляции OpenCV на нашем Raspberry Pi установлены, нам нужно выполнить некоторую подготовительную работу, прежде чем мы сможем начать процесс компиляции.
Теперь нам нужно временно увеличить размер пространства подкачки, чтобы облегчить процесс компиляции OpenCV на Raspberry Pi.
Пространство подкачки используется операционной системой, когда на устройстве заканчивается физическая оперативная память. Хотя память подкачки намного медленнее, чем ОЗУ, в определенных ситуациях она все же может быть полезна.
Начните изменение конфигурации файла подкачки, выполнив следующую команду.
2. Пока мы находимся внутри этого файла, нам нужно найти и заменить следующую строку.
Найти
Заменить на
После изменения сохраните файл, нажав CTRL + X , затем Y , затем Введите .
3. Поскольку мы внесли изменения в конфигурацию файла подкачки, нам необходимо перезапустить его службу, используя приведенную ниже команду.
Перезапуская службу, мы заставляем ее пересоздавать файл подкачки.
4. Далее, давайте клонируем два репозитория OpenCV, которые нам нужны, на наш Raspberry Pi.
Запуск этих двух команд позволит получить последнюю доступную версию OpenCV из их репозитория git.
Поскольку эти репозитории довольно большие, их клонирование на Raspberry Pi может занять некоторое время.
Компиляция OpenCV на Raspberry Pi
1. Давайте начнем с создания каталога с именем « build » в клонированной папке « opencv », а затем изменим на него рабочий каталог.
В этой папке мы будем компилировать OpenCV на вашем Raspberry Pi.
2. Теперь, когда мы находимся в нашей недавно созданной папке сборки, мы можем использовать cmake
для подготовки OpenCV к компиляции на нашем Raspberry Pi.
Выполните следующую команду, чтобы сгенерировать необходимый make-файл.
3. После успешного завершения создания файла make мы наконец можем перейти к компиляции OpenCV, выполнив приведенную ниже команду.
Мы используем аргумент -j$(nproc)
, чтобы указать компилятору запустить компилятор для каждого из доступных процессоров.
Это значительно ускорит процесс компиляции и позволит каждому ядру Raspberry Pi работать над компиляцией OpenCV.
Обратите внимание, что процесс компиляции может занять значительное время. На нашем Raspberry Pi 4 этот процесс занял около 1 часа.
Если процесс компиляции по какой-либо причине не завершается или зависает, есть вероятность, что процессор заблокирован.
Чтобы обойти это, вы можете попробовать запустить один процесс make. Это должно уменьшить вероятное количество проблем, но увеличить время компиляции.
4. Когда процесс компиляции завершится, мы можем перейти к установке OpenCV.
К счастью для нас, это достаточно простой процесс, требующий выполнения следующей команды.
Эта команда автоматически скопирует все необходимые файлы в нужные места.
5. Теперь нам также нужно перегенерировать кэш ссылок библиотек операционных систем.
Raspberry Pi не сможет найти нашу установку OpenCV, если мы не выполним следующую команду.
Очистка после компиляции
1. Теперь, когда мы закончили компиляцию OpenCV, нам больше не нужен такой большой файл подкачки.
Давайте снова отредактируем конфигурацию файла подкачки с помощью следующей команды.
2. В этом файле вам нужно найти и изменить следующую строку.
Найти
Заменить на
Когда закончите, сохраните файл, нажав CTRL + X , затем Y , затем Введите .
3. Теперь наша последняя задача очистки требует, чтобы мы перезапустили службу файла подкачки.
Перезапуск службы уменьшит размер файла с 2 ГБ до 100 МБ.
Тестирование OpenCV на Raspberry Pi
1.