- Inleiding en overzicht
- Installeren op Windows (voorgebouwde binaries)
- Downloaden van OpenCV en Python
- Installeren van module-afhankelijkheden
- Installeren Python-OpenCV Module
- Installeren op Linux (compileren vanaf broncode)
- Downloaden van OpenCV
- Installeren van Build Dependencies
- Compileren en installeren van OpenCV
- De installatie verifiëren
- Linux Build Problemen
- Undefined AV_CODEC_ID_... in ffmpeg_codecs.hpp
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.