OpenCV 3.0 Python Guide

Inleiding en overzicht

Dit document bevat instructies voor het installeren en migreren naar de nieuwste versie van OpenCV (versie 3) en de Python-bindingen. Naast enkele API veranderingen, zijn er ook veranderingen in de Python interface (b.v. verwijdering van cv2.cv) die veranderingen in bestaande code kunnen vereisen om met de nieuwe versie van de cv2 module te werken. Zie na de installatie de volgende pagina, Migratie & Wijzigingen, voor details over de wijzigingen in de module en voor hulp bij het migreren van bestaande Python code naar de nieuwe versie.

Deze pagina behandelt de installatie van OpenCV 3 op Windows (met behulp van vooraf gebouwde binaries) en Linux (gecompileerd vanaf broncode), inclusief de Python interface (de cv2 module). OpenCV kan worden gedownload van de officiële OpenCV website. Merk op dat deze gids is geschreven op basis van OpenCV versie 3.1.0. Na de installatie, is het aanbevolen dat u de versie van OpenCV controleert die Python gebruikt:

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

Merk op dat hoewel OpenCV 3 de laatste release is, de module volgens afspraak nog steeds cv2 wordt genoemd.

Installeren op Windows (voorgebouwde binaries)

Het gebruik van voorgebouwde binaries is de snelste manier om een Python OpenCV omgeving op Windows aan de gang te krijgen. Op dit moment is alleen de Python 2 versie van de cv2 module gebouwd en opgenomen in de laatste Windows versie. Ondersteuning voor Python 3 (evenals het toevoegen van andere niet-standaard functies/modules), vereist compileren vanaf broncode – zie de officiële OpenCV documentatie voor details.

Downloaden van OpenCV en Python

Om te beginnen, download OpenCV voor Windows (versie 3.1, opencv-3.1.0.exe), en pak het uit in een directory van uw keuze. De Windows build bevat zowel een 32-bit als 64-bit module voor Python 2.7.

Voordat u verder gaat, zorg ervoor dat u een werkende Python 2.7 installatie heeft, die kan worden gedownload van de Python website. Deze gids is getest met Python 2.7.9 (x86 installer / x64 installer). Bij de installatie wordt aanbevolen dat u het installatieprogramma toestaat Python aan uw PATH omgevingsvariabele toe te voegen, zodat u python en pip vanaf een opdrachtprompt kunt uitvoeren.

Installeren van module-afhankelijkheden

De Python OpenCV cv2 module vereist zowel de NumPy als de SciPy stack. Om deze te krijgen, zorg er eerst voor dat u een werkende python omgeving hebt, en pip geinstalleerd hebt (zo niet, gebruik de links hierboven, en zorg ervoor dat de Python map in uw PATH variabele zit).

Christoph Gohlke levert momenteel een aantal (onofficiële) voorgebouwde Python pakketten voor Windows, inclusief NumPy en SciPy. Download de laatste stabiele versies van NumPy en SciPy, en installeer ze door pip install .whl aan te roepen vanaf een commando prompt. Merk op dat je de versie moet downloaden die overeenkomt met je Python omgeving (2.7 in dit geval) en woordlengte. Bijvoorbeeld, op 32-bit systemen/interpreters:

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

En voor 64-bit systemen/interpreters:

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

Na de installatie moet u import numpy en import scipy vanuit een Python-interpreter kunnen uitvoeren om te controleren of de modules correct zijn geïnstalleerd. U kunt controleren welke versies van NumPy en SciPy zijn geïnstalleerd in numpy.__version__ en scipy.__version__, respectievelijk.

Installeren Python-OpenCV Module

Ten slotte moeten we de OpenCV module kopiëren naar de lokale Python pakketten. In de bestanden uitgepakt uit opencv-3.0.0-rc1.exe, ga naar de folder opencv\build\python.7\, en open ofwel de x86\ (voor 32-bit) of x64\ (voor 64-bit) folder. In elke map staat een cv2.pyd bestand.

Kopieer cv2.pyd direct naar de Lib\site-packages\ directory van uw Python installatie. Voor de meeste gebruikers zal dit te vinden zijn op:

C:\Python27\Lib\site-packages 

Zorg er tenslotte voor dat de OpenCV .dll bestanden ergens in de %PATH% van uw systeem staan, vooral het opencv_ffmpeg310.dll (of opencv_ffmpeg310_64.dll voor 64-bit systemen) bestand dat nodig is voor het laden van videobestanden.

Ga verder met het Verifiëren van de Installatie sectie om er zeker van te zijn dat alles correct is geïnstalleerd, en dat de nieuwe versie van OpenCV wordt gebruikt. Bekijk ook de volgende pagina, Migratie & Wijzigingen, voor details over de wijzigingen in de module en het bijwerken van bestaande code.

Installeren op Linux (compileren vanaf broncode)

Hoewel deze gids is geschreven voor Ubuntu 12.04/14.04 en andere varianten (b.v. Xubuntu/Lubuntu/Kubuntu), zou het proces grotendeels hetzelfde moeten zijn op andere versies, evenals vergelijkbare Debian-achtige Linux-distributies. Let op de uitvoer van elk commando om zeker te zijn dat alles correct verliep, en als er problemen zijn tijdens het bouwproces, zie dan de onderkant van dit document voor mogelijke oplossingen

Downloaden van OpenCV

Om te beginnen, download OpenCV voor Linux (versie 3.1.0, opencv-3.1.0.zip), en pak het uit in een directory naar keuze (bv. ~/opencv-src). Maak een build map aan in de map waar het archief is uitgepakt (de map met het CMakeLists.txt bestand), en open daar een terminal sessie. Bijvoorbeeld:

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

Uitvoeren van alle volgende commando’s vanuit de build sub-map zelf, zodat de gecompileerde bestanden daar geplaatst zullen worden.

Installeren van Build Dependencies

Om OpenCV te compileren, moeten we er zeker van zijn dat de benodigde dependencies beschikbaar zijn, inclusief de build tools zelf. We kunnen de vereiste dependencies verkrijgen met apt op Ubuntu, maar zorg er eerst voor dat de pakketlijst up-to-date is door apt-get update uit te voeren. Voer vervolgens de volgende commando’s uit om de benodigde pakketten te verkrijgen (zie hieronder voor een lijst van alle pakketten):

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 een enkele regel:

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

Merk op dat voor extra OpenCV modules/functies (b.v. GPU/CUDA ondersteuning, of Python 3 module), u de respectievelijke ontwikkel/SDK pakketten voor die bibliotheken ook moet downloaden. De hierboven vermelde afhankelijkheden dekken alleen het bouwen van OpenCV zelf en de Python 2.7 cv2 module.

Compileren en installeren van OpenCV

Nu we de vereiste bouw-afhankelijkheden hebben, draai cmake (opnieuw, in de build/ directory die we aangemaakt hebben) om het Makefile te genereren om OpenCV te bouwen:

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

Als er fouten optreden, verzeker u er dan van dat u alle vereiste pakketten gedownload hebt – de uitvoer zou moeten helpen om op te sporen wat er ontbreekt. Om er zeker van te zijn dat de Python module wordt gebouwd, zou u python2 moeten zien in de lijst van geconfigureerde modules na het uitvoeren van cmake:

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

Als u de python2 module niet ziet in de lijst “Te bouwen”, controleer dan of u de juiste Python ontwikkelingspakketten hebt geïnstalleerd, verwijder alle bestanden uit de build/ map, en probeer het cmake commando opnieuw uit te voeren.

Nu kunnen we OpenCV (en de Python module) bouwen met make, en het installeren op ons systeem:

makesudo make install

Zorg ervoor dat het bouwen succesvol was na het aanroepen van make, en controleer de uitvoer voordat u installeert. Als u problemen/errors tegenkomt bij het bouwen, controleer dan nogmaals of u alle vereiste dependencies en header-bestanden op uw systeem hebt. Als er daadwerkelijk problemen zijn met het bouwen van OpenCV zelf, zie dan de Linux Build Issues sectie hieronder voor enkele mogelijke workarounds.

Bij het installeren van OpenCV 3.0-rc1 op Ubuntu 12.04, liep ik tegen bouwfouten aan betreffende enkele ontbrekende codec #define entries. Zoals vermeld, zijn de stappen om dit te doen hieronder gedetailleerd, mocht u tegen hetzelfde probleem aanlopen (het probleem zou opgelost moeten zijn in versie 3.1.0 en hoger). Ubuntu 14.04 en hoger zouden succesvol moeten bouwen zonder enige aanpassingen.

Als het bouwen succesvol was, maar u kunt niet import cv2 vanuit een Python shell na het uitvoeren van make install, kunt u de module handmatig installeren door het cv2.so bestand dat we zojuist hebben gebouwd in de build/lib/ map te kopiëren naar /usr/local/lib/python2.7/dist-packages/. Vanuit de build/ map kan dit worden gedaan door:

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

Na deze stap is de cv2 module geïnstalleerd, en kan nu worden geïmporteerd door uw Python omgeving. Ga verder naar de sectie Installatie verifiëren om te verzekeren dat alles correct werd geïnstalleerd, en nog belangrijker, dat de juiste versie van OpenCV wordt gebruikt door Python. U kunt ook kijken op de volgende pagina, Migratie & Wijzigingen, voor details over wijzigingen in de cv2 module, en welke wijzigingen moeten worden aangebracht in bestaande code om te draaien met de bijgewerkte module.

De installatie verifiëren

Zoals eerder vermeld, kunt u controleren of de cv2 module correct is geïnstalleerd door het volgende in een Python shell uit te voeren:

import cv2print cv2.__version__

Als de juiste versie string wordt afgedrukt (3.0.0-rc1 of nieuwer als u een recentere versie hebt gebruikt), is alles correct geïnstalleerd op dit punt!

Merk op dat er enkele grote veranderingen zijn in de cv2 module hiërarchie zelf, en Python programma’s geschreven met OpenCV 2.4.x in het achterhoofd werken misschien niet meer goed. Zie de volgende sectie, Migratie & Veranderingen voor details over de veranderingen, en hoe programma’s aan te passen om met de veranderingen om te gaan.

Linux Build Problemen

Op sommige systemen kunt u tegen problemen aanlopen bij het compileren van OpenCV zelf, afhankelijk van welke pakketten beschikbaar zijn. Als de juiste header files beschikbaar zijn, maar er toch problemen optreden bij het bouwen, probeer dan te kijken of er workarounds zijn voor het probleem.

Undefined AV_CODEC_ID_... in ffmpeg_codecs.hpp

Als u tegen een probleem aanloopt waarbij bouwfouten worden veroorzaakt doordat bepaalde codecs niet zijn gedefinieerd, kunt u een recentere versie van ffmpeg_codecs.hpp van hier downloaden, en deze vervangen in de broncode die u hebt gedownload/geëxtraheerd in de modules/videoio/src/ map.

Als alternatief kunt u ze handmatig declareren door het ffmpeg_codecs.hpp bestand zelf te bewerken door de ontbrekende codec entry voor H263I toe te voegen, en WNV te hernoemen naar WNV1. U kunt zien welke veranderingen gemaakt moeten worden door deze commit van het OpenCV GitHub project te bekijken.

Als het bestand is bijgewerkt, kunt u make opnieuw aanroepen vanuit de build/ map, en OpenCV zou nu zonder fouten moeten compileren.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.