Inoltrandoci sempre di più nella giungla della Picam: proseguiamo quindi il nostro corso.
Oggi tratteremo l’installazione di OpenCV sul nostro Raspberry Pi; Per chi non lo conoscesse, OpenCV è una libreria di visione artificiale in tempo reale molto potente, opensurce e si, gira anche sulla nostra schedina. E’ un programma molto pesante, molto esoso di risorse e per questo vi consiglierei di installarlo su di un Raspberry “libero” o che comunque non abbia altre operazioni da fare, meglio ancora se Raspberry Pi 3, non per farvi spendere inutilmente dei soldi, ma perché è più comodo avere il modello più performante proprio in virtù delle operazioni molto complicate (rapportate a un Raspberry Pi) che il software deve compiere.
Tra le varie cose che OpenCv ci permette di fare, abbiamo il riconoscimento facciale, a cui potremmo abbinare un sistema che “se le ricordi” e le confronti con un archivio…
O, un altro esempio potrebbe essere l’implementazione di un sistema visuale su un robot. In questo video, un maker portoghese ha creato un piccolo robot che segue una linea sul pavimento
Insomma, i progetti possibili sono tantissimi e con la fantasia se ne possono inventare di altri. Noi impareremo ad usare questo potente strumento nella lezione 4, ora installiamolo!
Pre-Installazione
Prima di partire per la vacanza in camper sarebbe buona regola fare un controllo totale del mezzo, quindi, visto che non ho un camper, e che tanto meno sono in vacanza…
sudo apt-get update
sudo apt-get update
sudo rpi-update
Installazione
Installiamo adesso i pacchetti necessari per la compilazione del sorgente di OpenCV
sudo apt-get install build-essential cmake pkg-config
Installiamo ora le librerie richieste, riguardanti le immagini
sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
Okay, ora dobbiamo installare la libreria GTK
sudo apt-get install libgtk2.0-dev
Considerando che le immagini dovranno essere gestite praticamente in tempo reale e con una frequenza più che modesta, installiamo anche le librerie relative al controllo I/O delle immagini
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
Per ottimizzare un po’ tutta la macchina digitiamo
sudo apt-get install libatlas-base-dev gfortran
Ora, scarichiamo e installiamo pip, il “gestore librerie” di Python con
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
Installiamo virtualenv e rimuoviamo la cache
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
Andiamo ora a modificare il profilo con
nano ~/.profile
1 2 3 |
# virtualenv and virtualenvwrapper export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh |
Ricarichiamo tutto con
source ~/.profile
Creiamo adesso l’ambiente virtuale computer vision
mkvirtualenv cv
Installiamo l’ultima versione di python-dev
sudo apt-get install python2.7-dev
Per una migliore gestione degli array d’immagine installiamo NumPy con il comando seguente (circa 15 minuti richiesti – una pausa ce la meritiamo)
pip install numpy
Vi siete ripresi un pochino? Bene, ora finalmente scarichiamo il sorgente di OpenCV, lo scompattiamo e poi entriamo nella directory
cd && wget -O opencv-2.4.10.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.10/opencv-2.4.10.zip/download
unzip opencv-2.4.10.zip
cd opencv-2.4.10
Settiamo la build
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON ..
Compiliamo ora e.. andiamo a letto 🙂 (tempo richiesto circa 5 ore – la pazienza è virtù dei forti )
make
Svegliati? Riposato bene? Possiamo, finalmente, installare OpenCV
sudo make install
sudo ldconfig
Andiamo a creare i link per il corretto funzionamento
cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
ln -s /usr/local/lib/python2.7/site-packages/cv.py cv.py
Sono consapevole del fatto che sia una faccenda piuttosto ostica, spero comunque di avervi dato un aiuto concreto.