- Indledning og oversigt
- Installation på Windows (præbyggede binære filer)
- Download af OpenCV og Python
- Installation af modulafhængigheder
- Installation af Python-OpenCV-modulet
- Installation på Linux (kompilering fra kildekode)
- Download af OpenCV
- Installation af byggeafhængigheder
- Kompilering og installation af OpenCV
- Verificering af installation
- Linux Build Issues
- Undefined AV_CODEC_ID_... in ffmpeg_codecs.hpp
Indledning og oversigt
Dette dokument indeholder instruktioner til installation og migrering til den seneste udgave af OpenCV (version 3) og Python-bindingerne. Ud over nogle API-ændringer er der også ændringer i Python-grænsefladen (f.eks. fjernelse af cv2.cv
), som kan kræve ændringer i eksisterende kode for at kunne fungere med den nye version af cv2
-modulet. Efter installationen skal du se næste side, Migration & Ændringer, for at få oplysninger om ændringerne i modulet og for at få hjælp til at migrere eksisterende Python-kode til den nye version.
Denne side dækker installation af OpenCV 3 på Windows (ved hjælp af forudkomponerede binære filer) og Linux (kompileret fra kildekode), herunder Python-grænsefladen (cv2
-modulet). OpenCV kan downloades fra det officielle OpenCV-websted. Bemærk, at denne vejledning er skrevet på baggrund af OpenCV version 3.1.0. Efter installationen anbefales det, at du kan kontrollere den version af OpenCV, som Python bruger:
import cv2print cv2.__version__# Should print 3.0.0-rc1 or newer.
Bemærk, at selv om OpenCV 3 er den nyeste version, hedder modulet efter konvention stadig cv2
.
Installation på Windows (præbyggede binære filer)
Brug af præbyggede binære filer er den hurtigste måde at få et Python OpenCV-miljø op og køre på Windows. I øjeblikket er kun Python 2-versionen af cv2
-modulet bygget og inkluderet i den seneste Windows-udgave. Understøttelse af Python 3 (samt tilføjelse af andre ikke-standardiserede funktioner/moduler), kræver kompilering fra kildekoden – se den officielle OpenCV-dokumentation for nærmere oplysninger.
Download af OpenCV og Python
For at begynde skal du downloade OpenCV til Windows (version 3.1, opencv-3.1.0.exe
) og udpakke den til en mappe efter eget valg. Windows-bygningen indeholder både et 32-bit- og 64-bit-modul til Python 2.7.
Hvor du fortsætter, skal du sikre dig, at du har en fungerende Python 2.7-installation, som kan downloades fra Pythons websted. Denne vejledning blev testet med Python 2.7.9 (x86-installationsprogram / x64-installationsprogram). Når du installerer, anbefales det, at du tillader installationsprogrammet at tilføje Python til din PATH
miljøvariabel, så du kan køre python
og pip
fra en kommandoprompt.
Installation af modulafhængigheder
Python OpenCV cv2
-modulet kræver både NumPy
– og SciPy
-stakken. For at få dette skal du først sikre dig, at du har et fungerende python
-miljø og har pip
installeret (hvis ikke, skal du bruge linkene ovenfor og sikre dig, at Python-mappen er i din PATH
-variabel).
Christoph Gohlke leverer i øjeblikket nogle (uofficielle) præ-byggede Python-pakker til Windows, herunder NumPy og SciPy. Hent de seneste stabile versioner af NumPy og SciPy, og installer dem ved at kalde pip install .whl
fra en kommandoprompt. Bemærk, at du skal downloade den version, der svarer til dit Python-miljø (2.7 i dette tilfælde) og ordlængden. For eksempel på 32-bit systemer/fortolkere:
pip install numpy-1.9.2+mkl-cp27-none-win32.whlpip install scipy-0.15.1-cp27-none-win32.whl
Og for 64-bit systemer/fortolkere:
pip install numpy-1.9.2+mkl-cp27-none-win_amd64.whlpip install scipy-0.15.1-cp27-none-win_amd64.whl
Når du har installeret, bør du kunne køre import numpy
og import scipy
fra en Python-fortolker for at kontrollere, at modulerne blev installeret korrekt. Du kan kontrollere, hvilke versioner af NumPy og SciPy der er installeret fra henholdsvis numpy.__version__
og scipy.__version__
.
Installation af Python-OpenCV-modulet
Sidst skal vi kopiere OpenCV-modulet ind i de lokale Python-pakker. I de filer, der er udtrukket fra opencv-3.0.0-rc1.exe
, skal du gå til mappen opencv\build\python.7\
og åbne enten mappen x86\
(for 32-bit) eller x64\
(for 64-bit). I hver af dem vil der være en cv2.pyd
-fil.
Kopier cv2.pyd
direkte ind i mappen Lib\site-packages\
i din Python-installation. For de fleste brugere vil denne findes på:
C:\Python27\Lib\site-packages
Slutteligt skal du sikre dig, at OpenCV .dll-filerne er et sted i dit systems %PATH%
, især filen opencv_ffmpeg310.dll
(eller opencv_ffmpeg310_64.dll
for 64-bit-systemer), der kræves til indlæsning af videofiler.
Fortsæt til afsnittet Verifikation af installationen for at sikre, at alt blev installeret korrekt, og at den nye version af OpenCV anvendes. Husk også at tjekke næste side, Migration & Ændringer, for detaljer om ændringerne i modulet og opdatering af eksisterende kode.
Installation på Linux (kompilering fra kildekode)
Selv om denne vejledning er skrevet til Ubuntu 12.04/14.04 og andre varianter (f.eks. Xubuntu/Lubuntu/Kubuntu), bør processen stort set være den samme på andre versioner, samt lignende Debian-lignende Linux-distributioner. Vær opmærksom på output af hver kommando for at sikre, at alt fungerede korrekt, og hvis der er problemer under opbygningsprocessen, kan du se nederst i dette dokument for mulige afhjælpninger
Download af OpenCV
For at begynde skal du downloade OpenCV til Linux (version 3.1.0, opencv-3.1.0.zip
) og udpakke den til en mappe efter eget valg (f.eks. ~/opencv-src
). Opret en build
-mappe i den mappe, hvor arkivet blev udtrukket (mappen, der indeholder CMakeLists.txt
-filen), og åbn en terminalsession der. F.eks.:
# Assuming the files were extracted to ~/opencv-src/...cd ~/opencv-srcmkdir buildcd build
Udfør alle følgende kommandoer fra selve build
-undermappen, så de kompilerede filer placeres der.
Installation af byggeafhængigheder
For at kompilere OpenCV skal vi sikre, at de nødvendige afhængigheder er tilgængelige, herunder selve byggeværktøjerne. Vi kan hente de nødvendige ved hjælp af apt
på Ubuntu, men først skal du sikre dig, at pakkelisten er opdateret ved at køre apt-get update
. Derefter skal du udføre følgende kommandoer for at hente de nødvendige pakker (se nedenfor for en liste over alle på én linje):
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
I én linje:
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
Bemærk, at for yderligere OpenCV-moduler/funktioner (f.eks. GPU/CUDA-understøttelse eller Python 3-modul) skal du også hente de respektive udviklings/SDK-pakker for disse biblioteker. De ovenfor anførte afhængigheder dækker kun opbygning af selve OpenCV og Python 2.7 cv2
-modulet.
Kompilering og installation af OpenCV
Nu, hvor vi har de nødvendige byggeafhængigheder, skal du køre cmake
(igen i den build/
-mappe, vi oprettede) for at generere Makefile til opbygning af OpenCV:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
Hvis der opstår fejl, skal du sikre dig, at du har hentet alle de nødvendige pakker – outputtet bør hjælpe med at spore, hvad der mangler. For at sikre, at Python-modulet bliver bygget, skal du se python2
på listen over konfigurerede moduler efter at have kørt cmake
:
-- Linker flags (Release):-- Linker flags (Debug):-- Precompiled headers: YES---- OpenCV modules:-- To be built: hal core flann imgproc ml python2
Hvis du ikke kan se python2
-modulet på listen “To be built”, skal du kontrollere, at du har de korrekte Python-udviklingspakker installeret, fjerne alle filer fra mappen build/
og prøve at køre cmake
-kommandoen igen.
Nu kan vi bygge OpenCV (og Python-modulet) ved hjælp af make
og installere det på vores system:
makesudo make install
Sørg for, at opbygningen lykkedes efter at have kaldt make
, og kontroller output, inden du installerer. Hvis du støder på build-problemer/fejl, skal du igen sikre dig, at du har alle de nødvendige afhængigheder og headerfiler på dit system. Hvis der er faktiske build-problemer med selve OpenCV, kan du se afsnittet Linux Build Issues nedenfor for nogle mulige løsninger.
Når jeg installerede OpenCV 3.0-rc1 på Ubuntu 12.04, løb jeg ind i build-fejl vedrørende nogle manglende codec #define
-poster. Som nævnt er trinene til at gøre dette beskrevet nedenfor, hvis du skulle løbe ind i det samme problem (problemet skulle være løst i version 3.1.0 og højere). Ubuntu 14.04 og nyere bør bygge med succes uden at kræve nogen ændringer.
Hvis det lykkedes at bygge, men du ikke kan import cv2
fra en Python-shell efter at have kørt make install
, kan du installere modulet manuelt ved at kopiere den cv2.so
-fil, vi netop har bygget i build/lib/
-mappen, til /usr/local/lib/python2.7/dist-packages/
. Fra mappen build/
kan dette gøres ved at:
sudo cp lib/cv2.so /usr/local/lib/python2.7/dist-packages/
Efter dette trin er modulet cv2
installeret, og det kan nu importeres af dit Python-miljø. Fortsæt til afsnittet Verificering af installationen for at sikre, at alt blev installeret korrekt, og endnu vigtigere, at den korrekte version af OpenCV bruges af Python. Du kan også se næste side, Migration & Changes, for at få oplysninger om ændringerne i cv2
-modulet, og hvilke ændringer der skal foretages i eksisterende kode for at kunne køre med det opdaterede modul.
Verificering af installation
Som tidligere nævnt kan du kontrollere, at cv2
-modulet blev installeret korrekt, ved at udføre følgende i en Python-shell:
import cv2print cv2.__version__
Hvis den korrekte versionsstreng udskrives (3.0.0-rc1
eller nyere, hvis du har brugt en nyere version), er alt installeret korrekt på dette tidspunkt!
Bemærk, at der er nogle større ændringer i selve cv2
-modulhierarkiet, og Python-programmer, der er skrevet med OpenCV 2.4.x i tankerne, fungerer muligvis ikke længere korrekt. Se næste afsnit, Migration & Ændringer for detaljer om ændringerne, og hvordan du ændrer programmerne for at håndtere ændringerne.
Linux Build Issues
På nogle systemer kan du løbe ind i problemer ved kompilering af selve OpenCV, afhængigt af hvilke pakker der er tilgængelige. Hvis de korrekte headerfiler er tilgængelige, men der stadig opstår build-problemer, skal du prøve at se, om der er nogen workarounds nedenfor for problemet.
Undefined AV_CODEC_ID_...
in ffmpeg_codecs.hpp
Hvis du løber ind i et problem, hvor build-fejl skyldes, at visse codecs ikke er defineret, kan du hente en nyere version af ffmpeg_codecs.hpp
herfra og erstatte den i den kildekode, du har hentet/udtrukket i mappen modules/videoio/src/
.
Alternativt kan du erklære dem manuelt ved at redigere selve ffmpeg_codecs.hpp
-filen ved at tilføje den manglende codec-post for H263I
og omdøbe WNV
til WNV1
. Du kan se, hvilke ændringer der skal foretages, ved at se dette commit fra OpenCV GitHub-projektet.
Når filen er opdateret, kan du kalde make
igen fra mappen build/
, og OpenCV skulle nu afslutte kompileringen uden fejl.