Rozpoznawanie ekranu #4: OpenCV na Raspberry Pi
Problem z OpenCV na Raspberry Pi? Nie ty pierwszy, nie ostatni. Ten tutorial rozwiąże twoje problemy
Rozpoznawanie ekranu
Jeżeli próbowaliście zainstalować OpenCV na RPi jak pokazywałem w poprzedniej odsłonie serii Rozpoznawanie ekranu, napotkałeś pewien problem. A dokładniej, pomimo instalacji, OpenCV ciągle nie działa, którą na pewno chcesz rozpoznawać obraz za pomocą RPi – któż by nie chciał. Budowanie ze źródeł może pomóc ci nie tylko z odpaleniem OpenCV, ale i wszystkich innych bibliotek, których źródła są dostępne publicznie.
Wyrzuć co niepotrzebne
Znając życie, to może być kolejny tutorial, którym właśnie próbujesz uruchomić OpenCV na twoim RPi. Polecam wykonać poniższe komendy, aby wyczyścić środowisko przed kolejnymi krokami.
sudo apt purge wolfram-engine
sudo apt clean
sudo apt autoremoveUpdate systemu
Żeby system korzystał z najnowszych wersji narzędzi, należy wykonać update i upgrade systemu. Ten krok może potrwać od kilku minut do ponad godziny. W zależności, kiedy ostatnim razem była wykonywana ta czynność, a także od szybkości internetu. Instalacja z argumentem -y automatycznie zatwierdza wszelkie zadawane pytania „czy na pewno chcesz […] ?”.
sudo apt update -y && sudo apt upgrade -yCMake
Do budowania OpenCV użyjemy programu CMake. Jest on jednym z najpopularniejszych programem do budowania projektów.
sudo apt install build-essential cmake unzip pkg-config -yInstalacja niezbędnych bibliotek
Instalacja niezbędnych bibliotek do działania OpenCV:
sudo apt install libjpeg-dev libpng-dev libtiff-dev -y
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y
sudo apt install libxvidcore-dev libx264-dev -y
sudo apt install libgtk-3-dev -y
sudo apt install libcanberra-gtk* -y
sudo apt install libatlas-base-dev gfortran -y
sudo apt install python3-dev -yKolejnym krokiem będzie zainstalowanie biblioteki numpy za pomocą aplikacji pip – jeżeli jako domyślnego Python’a używasz 2.7 to zamiast pip użyj pip3:
pip install numpyŚciąganie i rozpakowanie OpenCV
Teraz czas przejść do konkretów. A mianowicie ściągnij repozytorium OpenCV za pomocą aplikacji wget:
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.0.zipRozpakuj ściągnięte pliki aplikacją unzip:
unzip opencv.zip
unzip opencv_contrib.zipNumer wersji w nazwie folderu jest zbędny – choć to bardziej zabieg estetyczny:
mv opencv-4.5.0 opencv
mv opencv_contrib-4.5.0 opencv_contribUtworze wirtualne środowisko Python przed zbudowaniem. Szczegółowo opis jak to robić, znajdziesz w linku poniżej.
virtualenv ./venv_opencvBudowanie kodu
Gdy już masz wirtualne środowisko, przejdź do folderu opencv i utwórz folder build. Po czym także do niego przejdź:
cd opencv
mkdir build
cd buildTeraz skonfiguruj CMake:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/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 BUILD_EXAMPLES=OFF ..Komendą make skompilujesz projekt (pamiętaj by pozostać w folderze build):
make -j4Zainstaluj skompilowany kod użyj make install. Za pomocą ldconfig, wcześniej ustalona konfiguracja zostanie wciągnięta do bibliotek:
sudo make install
sudo ldconfigTeraz jeszcze utwórz dowiązanie symboliczne zbudowanych bibliotek wprost do paczek Python’a w twoim wirtualnym środowisku jako cv2.so
cd ~/.virtualenvs/cv/lib/python3.5/site-packages/
ln -s /usr/local/python/cv2/python-3.5/cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so
cd ~Szybki test czy biblioteka działa poprawnie. Zaimportuj bibliotekę cv2, a następnie wyświetl jej wersje:
import cv2
print(cv2.__version__)
Wynikiem będzie:
'4.5.0'Tak w dość rozbudowany sposób można obejść problem z działaniem OpenCV na Raspberry Pi i teraz poprzednią cześć tutorialu możesz przećwiczyć na RPi.
