3. Installing OpenCV on Raspberry pi 4 - HaroldSP/Harold GitHub Wiki

22/05/2020 UPDATE

Decided to rebuild OpenCV due to appearing errors while using ROS

Followed this guide, except for installing virtualenv I added these lines to .bashrc:

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
export VIRTUALENVWRAPPER_ENV_BIN_DIR=bin  # <== This line fixed it for me

Sym-link your OpenCV 4 on the Raspberry Pi

In my case was:

cd /usr/local/lib/python3.7/site-packages/cv2/python-3.7/
sudo mv cv2.cpython-37m-arm-linux-gnueabihf.so cv2.so
cd ~/.virtualenvs/cv/lib/python3.7/site-packages/
ln -s /usr/local/lib/python3.7/site-packages/cv2/python-3.7/cv2.so cv2.so

Start (older version of that article)

sudo raspi-config

Advanced Options → Expand Filesystem. reboot.

Установка требуемых пакетов:

sudo apt-get install cmake cmake-curses-gui libgtk2.0-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev 
sudo apt-get install libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev
sudo apt-get install gfortran libatlas-base-dev libx264-dev libxvidcore-dev
sudo apt-get install pkg-config libgtk2.0-dev libzbar0

If not previously installed:

pip3 install imutils
pip3 install pyzbar

if needed: Увеличение размера файла подкачки

sudo nano /etc/dphys-swapfile

Находим строчку CONF_SWAPSIZE=100 И увеличиваем число например до 1024. Перезапускаем службу.

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

Создаем папку opencv в домашнем каталоге и переходим в нее

cd /home/pi
mkdir opencv
cd opencv

Скачиваем архивы с исходниками с помощью утилиты wget

wget https://github.com/opencv/opencv/archive/4.3.0.zip -O opencv_source.zip
wget https://github.com/opencv/opencv_contrib/archive/4.3.0.zip -O opencv_contrib.zip

Распаковываем архивы.

unzip opencv_source.zip
unzip opencv_contrib.zip

И теперь можно их удалить

rm opencv_source.zip
rm opencv_contrib.zip

Теперь переходим в папку opencv-4.3.0 и создаем в ней папку build

cd opencv-4.3.0
mkdir build
cd build

Настраиваем параметры сборки. Обратите внимание на путь до дополнительных модулей!

cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=OFF \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv/opencv_contrib-4.3.0/modules \ -D BUILD_EXAMPLES=ON \ -D BUILD_DOCS=ON ..

Компиляция в 4 потока (works on pi 4 with active cooling perfectly)

make -j4

Компиляция в 1 поток

make -j1

Установка библиотеки

sudo make install

Настройка динамического связывания

sudo ldconfig

Try it:

python3
import cv2
cv2.__version__

В результате, библиотека должна выдать номер версии, которую вы установили.


DON'T:

pip3 install opencv-python

If not helping anything else:

sudo apt-get install python3-opencv

Errors

ImportError: libQtGui.so.4: cannot open shared object file: No such file or directory

do:

sudo apt-get install -y libqtgui4
sudo apt install libqt4-test

ImportError:

ImportError: /home/pi/.local/lib/python3.7/site-packages/cv2/cv2.cpython-37m-arm-linux-gnueabihf.so: 
undefined symbol: __atomic_fetch_add_8

Add to bashrc:

export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1
save&exit
source .bashrc