OpenCV 3.0 Python Guide

Introduzione e panoramica

Questo documento contiene le istruzioni per installare e migrare all’ultima versione di OpenCV (versione 3) e ai binding Python. Oltre ad alcune modifiche alle API, ci sono anche modifiche all’interfaccia Python (ad esempio la rimozione di cv2.cv) che possono richiedere modifiche al codice esistente per funzionare con la nuova versione del modulo cv2. Dopo l’installazione, vedi la pagina successiva, Migrazione & Modifiche, per i dettagli riguardanti le modifiche al modulo e per un aiuto nella migrazione del codice Python esistente alla nuova versione.

Questa pagina copre l’installazione di OpenCV 3 su Windows (usando binari precompilati) e Linux (compilato dai sorgenti), inclusa l’interfaccia Python (il modulo cv2). OpenCV può essere scaricato dal sito ufficiale di OpenCV. Si noti che questa guida è scritta sulla base di OpenCV versione 3.1.0. Dopo l’installazione, si raccomanda di controllare la versione di OpenCV che Python sta usando:

import cv2print cv2.__version__# Should print 3.0.0-rc1 or newer.

Nota che sebbene OpenCV 3 sia l’ultima versione, per convenzione, il modulo si chiama ancora cv2.

Installazione su Windows (binari precostruiti)

Utilizzare i binari precostruiti è il modo più veloce per ottenere un ambiente Python OpenCV attivo e funzionante su Windows. Attualmente, solo la versione Python 2 del modulo cv2 è costruita e inclusa nell’ultima versione di Windows. Il supporto per Python 3 (così come l’aggiunta di altre caratteristiche/moduli non standard), richiede la compilazione dai sorgenti – vedi la documentazione ufficiale di OpenCV per i dettagli.

Scaricare OpenCV e Python

Per iniziare, scarica OpenCV per Windows (versione 3.1, opencv-3.1.0.exe), ed estrailo in una directory a tua scelta. La build per Windows include sia un modulo a 32-bit che a 64-bit per Python 2.7.

Prima di continuare, assicuratevi di avere un’installazione funzionante di Python 2.7, che può essere scaricata dal sito di Python. Questa guida è stata testata usando Python 2.7.9 (x86 installer / x64 installer). Quando si installa, si raccomanda di permettere al programma di installazione di aggiungere Python alla variabile d’ambiente PATH, in modo da poter eseguire python e pip da un prompt dei comandi.

Installazione delle dipendenze del modulo

Il modulo Python OpenCV cv2 richiede sia lo stack NumPy che SciPy. Per ottenerlo, assicurati prima di tutto di avere un ambiente python funzionante, e di avere pip installato (se no, usa i link qui sopra, e assicurati che la cartella Python sia nella tua variabile PATH).

Christoph Gohlke attualmente fornisce alcuni pacchetti Python precostruiti (non ufficiali) per Windows, inclusi NumPy e SciPy. Scarica le ultime versioni stabili di NumPy e SciPy, e installale chiamando pip install .whl da un prompt dei comandi. Nota che dovresti scaricare la versione corrispondente al tuo ambiente Python (2.7 in questo caso) e alla lunghezza della parola. Per esempio, su sistemi/interpreti a 32 bit:

pip install numpy-1.9.2+mkl-cp27-none-win32.whlpip install scipy-0.15.1-cp27-none-win32.whl

E per sistemi/interpreti a 64 bit:

pip install numpy-1.9.2+mkl-cp27-none-win_amd64.whlpip install scipy-0.15.1-cp27-none-win_amd64.whl

Dopo l’installazione, dovresti essere in grado di eseguire import numpy e import scipy da un interprete Python per verificare che i moduli siano stati installati correttamente. Puoi controllare quali versioni di NumPy e SciPy sono installate da numpy.__version__ e scipy.__version__, rispettivamente.

Installazione del modulo Python-OpenCV

Infine, dobbiamo copiare il modulo OpenCV nei pacchetti Python locali. Nei file estratti da opencv-3.0.0-rc1.exe, vai alla cartella opencv\build\python.7\, e apri la cartella x86\ (per 32-bit) o x64\ (per 64-bit). In ciascuna, ci sarà un file cv2.pyd.

Copia cv2.pyd direttamente nella directory Lib\site-packages\ della tua installazione di Python. Per la maggior parte degli utenti, questa si trova in:

C:\Python27\Lib\site-packages 

Infine, assicurati che i file .dll di OpenCV siano da qualche parte nella %PATH% del tuo sistema, specialmente il file opencv_ffmpeg310.dll (o opencv_ffmpeg310_64.dll per i sistemi a 64 bit) necessario per caricare i file video.

Continua nella sezione Verifica dell’installazione per assicurarti che tutto sia stato installato correttamente e che la nuova versione di OpenCV venga usata. Assicuratevi anche di controllare la pagina successiva, Migrazione & Modifiche, per i dettagli sulle modifiche al modulo e l’aggiornamento del codice esistente.

Installazione su Linux (compilazione dai sorgenti)

Anche se questa guida è scritta per Ubuntu 12.04/14.04 e altre varianti (ad esempio Xubuntu/Lubuntu/Kubuntu), il processo dovrebbe essere in gran parte lo stesso su altre versioni, così come su distribuzioni Linux simili a Debian. Presta attenzione all’output di ogni comando per assicurarti che tutto abbia funzionato correttamente, e se ci sono problemi durante il processo di compilazione, vedi il fondo di questo documento per possibili mitigazioni

Scaricare OpenCV

Per iniziare, scarica OpenCV per Linux (versione 3.1.0, opencv-3.1.0.zip), ed estrailo in una directory di tua scelta (per esempio ~/opencv-src). Create una cartella build all’interno della cartella in cui è stato estratto l’archivio (la cartella contenente il file CMakeLists.txt), e aprite lì una sessione di terminale. Per esempio:

# Assuming the files were extracted to ~/opencv-src/...cd ~/opencv-srcmkdir buildcd build

Esegui tutti i seguenti comandi dalla sottocartella build stessa, così i file compilati saranno messi lì.

Installazione delle dipendenze di compilazione

Per compilare OpenCV, dobbiamo assicurarci che le dipendenze richieste siano disponibili, inclusi gli stessi strumenti di compilazione. Possiamo ottenere quelle necessarie usando apt su Ubuntu, ma prima, assicurati che la lista dei pacchetti sia aggiornata eseguendo apt-get update. Successivamente, esegui i seguenti comandi per ottenere i pacchetti richiesti (vedi sotto per una lista di una riga di tutti):

sudo apt-get install cmake build-essential pkg-configsudo apt-get install libgtk2.0-dev libtbb-devsudo apt-get install python-dev python-numpy python-scipysudo apt-get install libjasper-dev libjpeg-dev libpng-dev libtiff-dev sudo apt-get install libavcodec-dev libavutil-dev libavformat-dev libswscale-devsudo apt-get install libdc1394-22-dev libv4l-dev

In linea singola:

sudo apt-get install cmake build-essential pkg-config libgtk2.0-dev libtbb-dev python-dev python-numpy python-scipy libjasper-dev libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libdc1394-22-dev libv4l-dev

Nota che per moduli/caratteristiche OpenCV addizionali (per esempio supporto GPU/CUDA, o modulo Python 3), dovrai scaricare anche i rispettivi pacchetti di sviluppo/SDK per quelle librerie. Le dipendenze elencate sopra coprono solo la compilazione di OpenCV stesso e del modulo Python 2.7 cv2.

Compilazione e installazione di OpenCV

Ora che abbiamo le dipendenze di compilazione richieste, esegui cmake (di nuovo, nella directory build/ che abbiamo creato) per generare il Makefile per compilare OpenCV:

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

Se ci sono errori, assicurati di aver scaricato tutti i pacchetti richiesti – l’output dovrebbe aiutare a rintracciare cosa manca. Per assicurarti che il modulo Python sarà compilato, dovresti vedere python2 nella lista dei moduli configurati dopo aver eseguito cmake:

-- Linker flags (Release):-- Linker flags (Debug):-- Precompiled headers: YES---- OpenCV modules:-- To be built: hal core flann imgproc ml python2

Se non vedi il modulo python2 elencato, nella lista “To be built”, controlla di aver installato i pacchetti di sviluppo Python appropriati, rimuovi tutti i file dalla cartella build/, e prova ad eseguire nuovamente il comando cmake.

Ora, possiamo costruire OpenCV (e il modulo Python) usando make, e installarlo sul nostro sistema:

makesudo make install

Assicurati che la compilazione abbia avuto successo dopo aver chiamato make, e controlla l’output prima di installare. Se ti imbatti in problemi/errori di compilazione, assicurati di nuovo di avere tutte le dipendenze e i file header richiesti sul tuo sistema. Se ci sono effettivamente problemi di compilazione con OpenCV stesso, vedi la sezione Linux Build Issues qui sotto per alcuni possibili workaround.

Installando OpenCV 3.0-rc1 su Ubuntu 12.04, mi sono imbattuto in errori di compilazione riguardanti alcune voci mancanti del codec #define. Come accennato, i passi per farlo sono dettagliati qui sotto, se dovessi incorrere nello stesso problema (il problema dovrebbe essere risolto nella versione 3.1.0 e superiore). Ubuntu 14.04 e superiori dovrebbero compilare con successo senza richiedere alcuna modifica.

Se la compilazione ha avuto successo, ma non puoi import cv2 da una shell Python dopo aver eseguito make install, puoi installare il modulo manualmente copiando il file cv2.so che abbiamo appena costruito nella cartella build/lib/ in /usr/local/lib/python2.7/dist-packages/. Dalla cartella build/, questo può essere fatto da:

sudo cp lib/cv2.so /usr/local/lib/python2.7/dist-packages/

Dopo questo passo, il modulo cv2 è installato, e può ora essere importato dal vostro ambiente Python. Continua nella sezione Verifica dell’installazione per assicurarti che tutto sia stato installato correttamente e, cosa più importante, che la versione corretta di OpenCV sia usata da Python. Puoi anche controllare la prossima pagina, Migrazione & Modifiche, per i dettagli sulle modifiche al modulo cv2, e quali modifiche devono essere fatte al codice esistente per funzionare con il modulo aggiornato.

Verificare l’installazione

Come detto in precedenza, potete verificare che il modulo cv2 sia stato installato correttamente eseguendo quanto segue in una shell Python:

import cv2print cv2.__version__

Se viene stampata la stringa della versione corretta (3.0.0-rc1 o più recente se avete usato una versione più recente), a questo punto tutto è installato correttamente!

Nota che ci sono alcuni importanti cambiamenti alla gerarchia del modulo cv2 stesso, e i programmi Python scritti con OpenCV 2.4.x in mente potrebbero non funzionare più correttamente. Vedi la prossima sezione, Migrazione &Cambiamenti per i dettagli sui cambiamenti, e come modificare i programmi per affrontare i cambiamenti.

Problemi di compilazione di Linux

In alcuni sistemi potresti incorrere in problemi durante la compilazione di OpenCV stesso, a seconda di quali pacchetti sono disponibili. Se sono disponibili i file header appropriati, ma sorgono ancora problemi di compilazione, prova a vedere se ci sono dei workaround qui sotto per il problema.

Undefined AV_CODEC_ID_... in ffmpeg_codecs.hpp

Se ti imbatti in un problema in cui gli errori di compilazione sono causati da certi codec non definiti, puoi scaricare una versione più recente di ffmpeg_codecs.hpp da qui, e sostituirla nel codice sorgente che hai scaricato/estratto nella cartella modules/videoio/src/.

In alternativa, puoi dichiararli manualmente modificando il file ffmpeg_codecs.hpp stesso aggiungendo la voce codec mancante per H263I, e rinominando WNV in WNV1. Puoi vedere quali modifiche devono essere fatte visualizzando questo commit dal progetto GitHub di OpenCV.

Una volta che il file è aggiornato, puoi richiamare make dalla cartella build/, e OpenCV dovrebbe finire di compilare senza errori ora.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.