OpenCV 3.0 Python Guide

Introduktion och översikt

Detta dokument innehåller instruktioner för att installera och migrera till den senaste versionen av OpenCV (version 3) och Pythonbindningarna. Förutom vissa API-ändringar finns det även ändringar i Pythongränssnittet (t.ex. avlägsnande av cv2.cv) som kan kräva ändringar i befintlig kod för att fungera med den nya versionen av cv2-modulen. Efter installationen, se nästa sida, Migration & Ändringar, för detaljer om ändringarna i modulen och för hjälp med att migrera befintlig Pythonkod till den nya versionen.

Denna sida täcker installation av OpenCV 3 på Windows (med hjälp av förbyggda binärer) och Linux (kompilerad från källkod), inklusive Pythongränssnittet (cv2-modulen). OpenCV kan laddas ner från den officiella OpenCV-webbplatsen. Observera att den här guiden är skriven utifrån OpenCV version 3.1.0. Efter installationen rekommenderas att du kan kontrollera vilken version av OpenCV som Python använder:

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

Bemärk att även om OpenCV 3 är den senaste versionen heter modulen enligt konvention fortfarande cv2.

Installation på Windows (förbyggda binärer)

Användning av förbyggda binärer är det snabbaste sättet att få igång en OpenCV-miljö för Python på Windows. För närvarande är endast Python 2-versionen av cv2-modulen byggd och inkluderad i den senaste Windows-versionen. Stöd för Python 3 (liksom att lägga till andra icke-standardiserade funktioner/moduler), kräver kompilering från källan – se den officiella OpenCV-dokumentationen för mer information.

Hämtning av OpenCV och Python

För att börja hämtar du OpenCV för Windows (version 3.1, opencv-3.1.0.exe) och extraherar den till en valfri katalog. Windows-byggnaden innehåller både en 32-bitars och 64-bitars modul för Python 2.7.

För att fortsätta bör du se till att du har en fungerande Python 2.7-installation, som kan laddas ner från Pythons webbplats. Den här guiden testades med Python 2.7.9 (x86-installer / x64-installer). När du installerar rekommenderas att du låter installationsprogrammet lägga till Python i din PATH-miljövariabel, så att du kan köra python och pip från en kommandotolk.

Installation av modulberoenden

Python OpenCV cv2-modulen kräver både NumPy och SciPy-stacken. För att få den måste du först se till att du har en fungerande python-miljö och att pip är installerad (om inte, använd länkarna ovan och se till att Python-mappen finns i din PATH-variabel).

Christoph Gohlke tillhandahåller för närvarande några (inofficiella) förbyggda Python-paket för Windows, inklusive NumPy och SciPy. Ladda ner de senaste stabila versionerna av NumPy och SciPy och installera dem genom att ringa pip install .whl från en kommandotolk. Observera att du bör ladda ner den version som motsvarar din Python-miljö (2.7 i det här fallet) och ordlängd. Till exempel, på 32-bitars system/tolkare:

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

Och för 64-bitars system/tolkare:

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 installerat bör du kunna köra import numpy och import scipy från en Python-tolkare för att verifiera att modulerna installerats korrekt. Du kan kontrollera vilka versioner av NumPy och SciPy som är installerade från numpy.__version__ respektive scipy.__version__.

Installation av Python-OpenCV-modulen

Sist måste vi kopiera OpenCV-modulen till de lokala Pythonpaketen. I de filer som extraherats från opencv-3.0.0-rc1.exe, gå till mappen opencv\build\python.7\ och öppna antingen mappen x86\ (för 32-bitars) eller x64\ (för 64-bitars). I varje kommer det att finnas en cv2.pyd-fil.

Kopiera cv2.pyd direkt till Lib\site-packages\-katalogen i din Python-installation. För de flesta användare kommer denna att finnas i:

C:\Python27\Lib\site-packages 

Slutningsvis ska du se till att OpenCV .dll-filerna finns någonstans i systemets %PATH%, särskilt filen opencv_ffmpeg310.dll (eller opencv_ffmpeg310_64.dll för 64-bitarssystem) som krävs för att ladda videofiler.

Fortsätt till avsnittet Verifiera installationen för att se till att allt installerades på rätt sätt och att den nya versionen av OpenCV används. Se också till att kolla in nästa sida, Migration & Changes, för detaljer om ändringarna i modulen och uppdatering av befintlig kod.

Installation på Linux (kompilering från källkod)

Och även om den här guiden är skriven för Ubuntu 12.04/14.04 och andra varianter (t.ex. Xubuntu/Lubuntu/Kubuntu), så bör processen i stort sett vara densamma på andra versioner, liksom på liknande Debian-liknande Linuxdistributioner. Var uppmärksam på utdata för varje kommando för att säkerställa att allt fungerade korrekt, och om det finns några problem under byggprocessen, se längst ner i det här dokumentet för möjliga lindringar

Hämtning av OpenCV

För att börja hämtar du OpenCV för Linux (version 3.1.0, opencv-3.1.0.zip) och extraherar den till en valfri katalog (t.ex. ~/opencv-src). Skapa en build-mapp i mappen där arkivet extraherades (katalogen som innehåller CMakeLists.txt-filen) och öppna en terminalsession där. Till exempel:

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

Uppför alla följande kommandon från själva undermappen build, så att de kompilerade filerna placeras där.

Installation av byggberoenden

För att kunna kompilera OpenCV måste vi se till att de nödvändiga beroendena är tillgängliga, inklusive själva byggverktygen. Vi kan hämta de nödvändiga med hjälp av apt på Ubuntu, men först ska vi se till att paketlistan är uppdaterad genom att köra apt-get update. Utför sedan följande kommandon för att hämta de nödvändiga paketen (se nedan för en enradslista över alla):

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 enradslistan:

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

Notera att för ytterligare OpenCV-moduler/funktioner (t.ex. GPU/CUDA-stöd eller Python 3-modul) måste du även hämta respektive utvecklings-/SDK-paket för dessa bibliotek. De beroenden som anges ovan täcker endast byggandet av själva OpenCV och Python 2.7 cv2-modulen.

Kompilering och installation av OpenCV

När vi nu har de erforderliga byggberoendena, kör cmake (återigen i build/-katalogen som vi skapade) för att generera Makefilen för att bygga OpenCV:

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

Om det blir några fel, se till att du har laddat ner alla erforderliga paket – utmatningen bör hjälpa till att spåra upp vad som saknas. För att säkerställa att Pythonmodulen kommer att byggas bör du se python2 i listan över konfigurerade moduler efter att ha kört cmake:

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

Om du inte ser python2-modulen i listan “To be built”, kontrollera att du har rätt Pythonutvecklingspaket installerade, ta bort alla filer från mappen build/ och försök att köra kommandot cmake igen.

Nu kan vi bygga OpenCV (och Pythonmodulen) med hjälp av make och installera den i vårt system:

makesudo make install

Säkerställ att byggandet lyckades efter att du har anropat make och kontrollera utdata innan du installerar. Om du stöter på problem/fel i samband med byggandet ska du återigen se till att du har alla nödvändiga beroenden och headerfiler i ditt system. Om det finns faktiska byggproblem med själva OpenCV, se avsnittet Linux Build Issues nedan för några möjliga lösningar.

När jag installerade OpenCV 3.0-rc1 på Ubuntu 12.04 stötte jag på byggfel som gällde några saknade codec #define-poster. Som nämnts beskrivs stegen för att göra detta nedan om du skulle stöta på samma problem (problemet bör vara löst i version 3.1.0 och senare). Ubuntu 14.04 och senare bör bygga framgångsrikt utan att kräva några ändringar.

Om byggandet lyckades, men du inte kan import cv2 från ett Python-skal efter att ha kört make install, kan du installera modulen manuellt genom att kopiera cv2.so-filen som vi just byggde i mappen build/lib/ till /usr/local/lib/python2.7/dist-packages/. Från mappen build/ kan detta göras genom att:

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

Efter detta steg är modulen cv2 installerad och kan nu importeras av din Python-miljö. Fortsätt till avsnittet Verifiera installationen för att se till att allt installerades korrekt och, ännu viktigare, att rätt version av OpenCV används av Python. Du kan också titta på nästa sida, Migration & Changes, för detaljer om ändringar i cv2-modulen och vilka ändringar som måste göras i befintlig kod för att den ska kunna köras med den uppdaterade modulen.

Verifiera installationen

Som tidigare nämnts kan du verifiera att cv2-modulen installerades korrekt genom att utföra följande i ett Python-skal:

import cv2print cv2.__version__

Om rätt versionssträng skrivs ut (3.0.0-rc1 eller nyare om du använde en nyare version), är allting installerat på rätt sätt vid denna tidpunkt!

Notera att det finns några större förändringar i själva cv2-modulhierarkin, och Pythonprogram som är skrivna med OpenCV 2.4.x i åtanke kanske inte längre fungerar korrekt. Se nästa avsnitt, Migration & Changes för detaljer om ändringarna och hur man ändrar program för att hantera ändringarna.

Linux Build Issues

På vissa system kan du stöta på problem när du kompilerar själva OpenCV, beroende på vilka paket som finns tillgängliga. Om de korrekta headerfilerna finns tillgängliga, men det ändå uppstår byggproblem, försök se om det finns några lösningar nedan för problemet.

Undefined AV_CODEC_ID_... in ffmpeg_codecs.hpp

Om du stöter på ett problem där byggfel orsakas av att vissa codecs inte är definierade, kan du ladda ner en nyare version av ffmpeg_codecs.hpp härifrån och ersätta den i källkoden som du laddade ner/extraherade i mappen modules/videoio/src/.

Alternativt kan du deklarera dem manuellt genom att redigera själva ffmpeg_codecs.hpp-filen genom att lägga till den saknade codec-posten för H263I och byta namn på WNV till WNV1. Du kan se vilka ändringar som måste göras genom att titta på denna commit från OpenCV GitHub-projektet.

När filen är uppdaterad kan du anropa make igen från mappen build/, och OpenCV bör avsluta kompileringen utan fel nu.

Lämna ett svar

Din e-postadress kommer inte publiceras.