OpenCV 3.0 Python-guide

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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.