предисловие
В прошлый раз мы установили большую часть программного обеспечения, связанного с системой.Эта статья в основном знакомит с компиляцией, установкой и использованием последней версии OpenCV 4.4 на Raspberry Pi.
Новые функции в OpenCV 4.4
Давайте сначала посмотрим на новые функции OpenCV 4.4:
- служба поддержкиYOLO v4;
- SIFTСрок действия патента истек, и он был перемещен в основной репозиторий;
- ONNX: добавить паруResnet_backbone(Торчвижн) поддержка;
- служба поддержкиEfficientDetМодель;
- на основе C++ и PythonПример распознавания текста;
- FlowNet2световой поток;
- добавленOpenVINO 2020.3 LTS / 2020.4поддержка версий;
Любое из вышеперечисленного стоит проглотить.К сожалению, на Raspberry Pi нет пакета для прямой установки.Мы можем только скомпилировать версию из исходного кода.
Базовая библиотека установки и компиляции OpenCV
Сначала установите некоторые зависимые библиотеки, необходимые для компиляции:
sudo apt-get -y install build-essential cmake unzip pkg-config
sudo apt-get -y install libjpeg-dev libpng-dev libtiff-dev
sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get -y install libxvidcore-dev libx264-dev
sudo apt-get -y install libgtk-3-dev
sudo apt-get -y install libcanberra-gtk*
sudo apt-get -y install libatlas-base-dev gfortran
Tip:
Есть много пакетов зависимостей, которые необходимо установить.Если загрузка всегда отключена, вы можете использовать VPN для ускорения.
Установите виртуальную среду Python
Официальный образ Raspberry Pi поставляется с двумя версиями python 2.7.16 и python 3.7.3.Чтобы изолировать конфликты пакетов в каждой среде, уточняется требуемая версия python. Сначала мы устанавливаем пакет управления виртуальной средой, который также будет иметь хорошую поддержку последующих зависимостей среды Tensorflow и Pytorch.
sudo pip3 install -U virtualenv
virtualenv -p python3 ~/my_envs/opencv
source ~/my_envs/opencv/bin/activate
# 安装 numpy
pip3 install numpy
Tip:
Перед компиляцией OpenCV обязательно установите пакет numpy, иначе скомпилированная версия не поддерживает операции numpy.
Скомпилируйте и установите FFmpeg
FFmpeg — это наиболее часто используемый пакет разработки с открытым исходным кодом для обработки аудио и видео. Он мощный и универсальный. Он широко используется на веб-сайтах с видео и в коммерческом программном обеспечении. Он также является стандартной реализацией кодирования/декодирования для многих аудио- и видеоформатов.
sudo apt-get install yasm
sudo apt-get install libsdl2-dev -y
Выберите версию ffmpeg 4.3.1 для компиляции и установки:
wget http://ffmpeg.org/releases/ffmpeg-4.3.1.tar.gz
tar -xvf ffmpeg-4.3.1.tar.gz
cd ffmpeg-4.3.1
./configure --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree
make
sudo make install
Завершите настройку ldconfig еще раз.
# 如果权限不足,申请一下 root 权限( sudo su )
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig
Наконец, введите ffmpeg в командной строке, чтобы увидеть, есть ли вывод, если есть вывод, он выполнен успешно.
ffmpeg -version
Tip:
Здесь есть огромная яма.Обязательно установите FFmpeg перед компиляцией OpenCV, и укажите WITH_FFMPEG=ON в параметрах компиляции, чтобы скомпилированный OpenCV мог использовать ffmpeg для декодирования видеопотока.
Я скомпилировал OpenCV в первый раз и обнаружил проблему только при использовании декодирования видео, мне пришлось удалить его и снова перекомпилировать... 3 часа каждый раз
Скомпилируйте и установите OpenCV 4.4.0
начать сgithub.com/opencvЗагрузите два исходных пакета и загрузите их в каталог загрузок Raspberry Pi с помощью WinSCP, описанного в предыдущей статье:
opencv-4.4.0.zip
opencv_contrib-4.4.0.zip
распаковать файлы
cd ~/Downloads/
unzip opencv-4.4.0.zip
unzip opencv_contrib-4.4.0.zip
изменить имя каталога
mv opencv-4.4.0 opencv
mv opencv_contrib-4.4.0 opencv_contrib
Заходим в директорию opencv, создаем папку сборки, указываем параметры компиляции,
Где OPENCV_EXTRA_MODULES_PATH указывает на исходный код contrib,
WITH_FFMPEG=ON включает поддержку FFmpeg.
cd opencv
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/Downloads/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D BUILD_TESTS=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D CMAKE_SHARED_LINKER_FLAGS='-latomic' \
-D WITH_FFMPEG=ON \
-D BUILD_EXAMPLES=OFF ..
make -j4
Терпеливо подождите два часа, обратите внимание на тепловыделение, если вывод следующий, значит успех:
Установите скомпилированный OpenCV:
sudo make install
sudo ldconfig
Когда приведенная выше компиляция будет успешной, она будет находиться в пути CMAKE_INSTALL_PREFIX=/usr/local,
Файл cv2.cpython-37m-arm-linux-gnueabihf.so создается в lib/python3.7/site-packages/cv2/python3.7. У вас должен быть этот файл для успешной компиляции, а затем вам нужно связать этот файл в lib/python3.7/site-packages виртуальной среды:
Протестируйте его в виртуальной среде, чтобы убедиться, что он работает успешно:
$ python
>>> import cv2
>>> cv2.__version__
'4.4.0'
Идеально!
Tip:
Если OpenCV установлен непосредственно под системой Python3.7, шаг создания мягкой ссылки можно пропустить.
Наконец, настройте файл opencv.pc.
cd /usr/local/lib
sudo mkdir pkgconfig
cd pkgconfig
sudo nano opencv.pc
Затем добавьте следующую информацию в opencv.pc, обратите внимание, что эта информация должна соответствовать пути к библиотеке, когда вы сами устанавливали opencv:
prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib
Name: opencv
Description: The opencv library
Version:4.4.0
Cflags: -I${includedir}/opencv4
Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core
~
Сохраните и выйдите, затем импортируйте файл в переменные среды:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
На данный момент opencv.pc настроен~
При повторном выполнении pkg-config --cflags --libs opencv вывод выглядит следующим образом:
Соответствующие документы по этому вопросу можно найти на официальном аккаунте «Глубокое пробуждение», а фоновый ответ: «rpi03», чтобы получить ссылку для скачивания.
Следующее уведомление
Мы скомпилируем PyTorch 1.6 и PyTorch 1.7, и запустить на нем йоло v5, Быть в курсе...
Добро пожаловать, чтобы отсканировать код, чтобы следовать и делиться больше