Создание приложений глубокого обучения с помощью Raspberry Pi 4b (3) статьи OpenCV

малиновый пирог
Создание приложений глубокого обучения с помощью Raspberry Pi 4b (3) статьи OpenCV

предисловие

В прошлый раз мы установили большую часть программного обеспечения, связанного с системой.Эта статья в основном знакомит с компиляцией, установкой и использованием последней версии OpenCV 4.4 на Raspberry Pi.

opencv

Новые функции в OpenCV 4.4

Давайте сначала посмотрим на новые функции OpenCV 4.4:

  • служба поддержкиYOLO v4;
  • SIFTСрок действия патента истек, и он был перемещен в основной репозиторий;
  • ONNX: добавить паруResnet_backbone(Торчвижн) поддержка;
  • служба поддержкиEfficientDetМодель;
  • на основе C++ и PythonПример распознавания текста;
  • FlowNet2световой поток;
  • добавленOpenVINO 2020.3 LTS / 2020.4поддержка версий;

Любое из вышеперечисленного стоит проглотить.К сожалению, на Raspberry Pi нет пакета для прямой установки.Мы можем только скомпилировать версию из исходного кода.

opencv01

Базовая библиотека установки и компиляции 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

ffmpeg

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

Терпеливо подождите два часа, обратите внимание на тепловыделение, если вывод следующий, значит успех:

opencv02

Установите скомпилированный 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 виртуальной среды:

opencv03

Протестируйте его в виртуальной среде, чтобы убедиться, что он работает успешно:

$ python
>>> import cv2
>>> cv2.__version__
'4.4.0'

opencv04

Идеально!

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 вывод выглядит следующим образом:

opencv05

Соответствующие документы по этому вопросу можно найти на официальном аккаунте «Глубокое пробуждение», а фоновый ответ: «rpi03», чтобы получить ссылку для скачивания.


Следующее уведомление

Мы скомпилируем PyTorch 1.6 и PyTorch 1.7, и запустить на нем йоло v5, Быть в курсе...

Добро пожаловать, чтобы отсканировать код, чтобы следовать и делиться больше