
Danas računalni vid (Computer Vision) ima široku primjenu, a napretkom tehnologija i informatizacijom postao je neizostavan dio u raznim područjima. Open Source Computer Vision (OpenCV) biblioteka je široki skup znanja o računalnom vidu kroz implementirane algoritame. U ovome članku detaljno smo opisali postupak samog instaliranja OpenCV na najpopularnije mini-računalo današnjice.
Od nule do OpenCV na Raspberry Pi. Pa krenimo redom.
1) Instaliranje OS
https://www.raspberrypi.org/downloads/raspbian/
Prvi korak je preuzimanje Raspbian Stretch with desktop (uzimamo zip verziju) s gornje web adrese.
Nakon preuzimanja možemo otkomprimirati .img datoteku koja je unutra.

2) Snimanje OS na karticu
Zatim trebamo preuzeti i instalirati aplikaciju balenaEtcher:
Pokrenimo balenaEtcher. Snimanje je vrlo jednostavno – na prvom koraku biramo .img datoteku (onu koju smo “izvadili” iz zip-a), zatim biramo fizičku lokaciju (drive) gdje se nalazi čitač kartica (pazite da ste postavili karticu, preporučamo kapacitet 16GB kao minimum za rad s OpenCV) i stisnemo Flash!

3) Omogućavanje SSH pristupa
Otvorite blok za pisanje (notepad) i s njime načinite „praznu” datoteku pod nazivom ssh (bez ekstenzije) u boot particiji na kartici
Ukoliko idete na spajanje preko WiFi na isto mjesto dodajte i datoteku wpa_supplicant.conf sljedećeg sadržaja:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="nesto" psk="nesto" key_mgmt=WPA-PSK }
ssid je naziv pristupne točke za vaš WiFi, a psk zaporka (lozinka)

4) Prvo pokretanje
Stavite karticu u vaš Raspberry Pi i uključite ga. Ubrzo bi trebao biti vidjiv na popisu spojenih uređaja pa pronađite njegovu IP adresu. Ukoliko ne možete koristiti kontrolno sučelje očitajte IP pomoću smartphone aplikacije (recimo Network IP scanner). Spojite se preko ssh protokola pomoću Putty-ja ili druge aplikacije sa sljedećim pristupnim podatcima:
username: pi
password: raspberry
Zatim upišite sljedeću naredbu kako bi pokrenuli konfiguriranje:
sudo raspi-config
Tamo izaberite 1. Advanced Options (Enter) i zatim A1 Expand Filesystem (Enter)

Završite konfiguriranje sa <Finish> i na pitanje “Would you like to reboot now?” odgovorite s Yes
5) Update & Upgrade
Reboot će vas izbaciti iz ssh sesije i morate se ponovo spojiti (username: pi / password: raspberry)
Prije daljnjih koraka poželjno je da imamo ažurirane verzije operativnog sustava i instaliranih aplikacija i to ćemo postići sa nardebama:
sudo apt-get update sudo apt-get upgrade
Na eventualne upite tijekom procedure odgovorite potvrdno sa: y
Ovisno o količini podataka ažuriranje može potrajati, a nakon njegovog završetka spremni smo za instaliranje OpenCV
6) Instaliranje nužnih dodataka i biblioteka
Instaliramo redom cMake, I/O pakete za rad s različitim grafičkim datotekama kao što su JPEG, PNG, TIFF, kao i I/O pakete za rad s različitim video datotekama. Ako kopirate, prenosite naredbu po naredbu.
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
Napomena: na svaki upit tijekom instalacije odgovorite y (enter)
Dalje instaliramo GTK development library, dodatke za optimizaciju raznih operacija i Python
sudo apt-get install libgtk2.0-dev libgtk-3-dev sudo apt-get install libatlas-base-dev gfortran sudo apt-get install python2.7-dev python3-dev
Napomena: kod novijih instalacija Raspbiana moguće da Python već imate pa će sistem uz obavijest preskočiti taj dio
7) Preuzimanje OpenCV source-a i instaliranje pip-a
Preuzmimo i “raspakirajmo” OpenCV 3.3.0 i OpenCV-contrib, a nakon toga instaliramo Python Package Installer (pip)
cd ~ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.3.0.zip unzip opencv.zip wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip unzip opencv_contrib.zip wget https://bootstrap.pypa.io/get-pip.py sudo python get-pip.py sudo python3 get-pip.py
8) Python Virtual Environments: virtualenv i virtualenvwrapper
Dobar članak zašto koristiti virtualna okruženja možete pročitati ovdje:
https://realpython.com/python-virtual-environments-a-primer/
Zatim krenimo s instaliranjem
sudo pip install virtualenv virtualenvwrapper sudo rm -rf ~/.cache/pip
Zatim otvorimo datoteku .profile
sudo nano .profile
I na samom kraju te datotetke iskopiramo i umetnemo sljedeće retke:
export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh
Datoteku snimimo s CTRL+O (enter) i zatim izađemo iz nano editora s CTRL+X
9) Aktiviranje profila i kreiranje virtualnog okruženja
Profil aktiviramo sa:
source ~/.profile
I zatim pokrećemo virtualno okruženje (virtual environment):
mkvirtualenv cv -p python3
Nakon pokretanja svakako provjerite imate li (cv) u promptu kao na slici:

Napomena: preporuka je koristiti Python 3 ali ukoliko iz određenih razloga imate potrebu raditi s Python 2 u prethodnom koraku naredba bi bila drugačija: mkvirtualenv cv -p python2
Još uvijek radimo u virtual environmentu cv i ondje instaliramo Numpy
pip install numpy
Prelazimo u opencv direktorij i tamo kreiramo poddirektorij build gdje radimo pripremu za kompiliranje:
cd ~/opencv-3.3.0/ mkdir build cd build
Izvršimo cmake (najlakše vam je iskopirati u naredbeni redak cijeli donji blok koda):
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.0/modules \ -D BUILD_EXAMPLES=ON ..
10) Kako olakšati, odnosno ubrzati kompiliranje
Isključivo za potrebe kompiliranja ćemo povećati SWAPSIZE kako bismo ubrzali cijeli proces, a nakon završetka ćemo vratiti postavke na stare vrijednosti. Otvorimo datoteku dphys-swapfile u nano editoru:
sudo nano /etc/dphys-swapfile
Nađite redak gdje pišeCONF_SWAPSIZE=100
i izmijenite ga da izgleda ovako CONF_SWAPSIZE=1024
Da ne radimo reboot kako bismo promjenu aktivirali zaustavite i ponovno pokrenite dphys-swapfile servis manualno s naredbama:
sudo /etc/init.d/dphys-swapfile stop sudo /etc/init.d/dphys-swapfile start
10) Kompiliranje OpenCV
Konačno možemo pokrenuti kompiliranje sa:
make -j4

Što će potrajati, a nakon toga ostaje nam samo dovršiti proces sa:
sudo make install sudo ldconfig
11) Mala korekcija naziva datoteke
Da bismo ispravno povezali rezultat kompiliranja potrebno je provjeriti naziv datoteke:
ls -l /usr/local/lib/python3.5/site-packages/

Nije nam poznato zašto se ovo događa i ostaje nam preimenovati datoteku pa se prebacujemo u navedeni direktorij i učinimo to sa mv komandom:
cd /usr/local/lib/python3.5/site-packages/ sudo mv cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so
Tek nakon ovoga možemo datoteku cv2.so povezati (sym-link) s našim virtualnim okruženjem (cv):
cd ~/.virtualenvs/cv/lib/python3.5/site-packages/ ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so
12) Provjera instalacije
sudo reboot
Zatim ponovo pokrenite vaš Raspberry Pi i prijavite se preko ssh veze:
Aktivirajte profil i prebacite se u virtualno okruženje gdje startajte Python:
source ~/.profile workon cv python
U Python shell-u (vidjeti ćete >>> prompt) unosite jednu po jednu sljedeće naredbe (iza svake naredbe ide Enter):
import cv2 cv2.__version__
I ako nako zadnjeg Entera dobijete ‘3.3.0’ instalacija je bila uspješna!

13) Vraćanje SWAPSIZE parametra i brisanje nepotrebnih direktorija
sudo nano /etc/dphys-swapfile
Ponovo kao i u jednom od prethodnih koraka nađite redak gdje pišeCONF_SWAPSIZE=1024
i vratite ga na staru vrijednost CONF_SWAPSIZE=100
CTRL+O (enter) i CTRL+X za izlaz
Dodatno možemo iskorištene direktorije obrisati da oslobodimo dodatni prostor na kartici:
rm -rf opencv-3.3.0 opencv_contrib-3.3.0
Nadam se da ste uspješno instalirali OpenCV na vaše Raspberry Pi-jeve.
Kod izrade ovog tutorijala poslužio sam se materijalima sa stranice:
https://www.pyimagesearch.com/2017/09/04/raspbian-stretch-install-opencv-3-python-on-your-raspberry-pi/