OpenCV 3.0 Python útmutató

Bevezetés és áttekintés

Ez a dokumentum az OpenCV legújabb verziójának (3. verzió) és a Python kötéseknek a telepítésére és az áttérésre vonatkozó utasításokat tartalmazza. Néhány API-változás mellett a Python-interfész is változik (pl. a cv2.cv eltávolítása), ami a meglévő kódban módosításokat igényelhet, hogy a cv2 modul új verziójával működjön. A telepítés után a következő oldalon, a Migráció & változások című oldalon talál részleteket a modult érintő változásokról, és segítséget a meglévő Python kódnak az új verzióra történő átállításához.

Ez az oldal az OpenCV 3 telepítésével foglalkozik Windowson (előre elkészített binárisok használatával) és Linuxon (forrásból fordítva), beleértve a Python interfészt (a cv2 modult). Az OpenCV letölthető az OpenCV hivatalos weboldaláról. Vegye figyelembe, hogy ez az útmutató az OpenCV 3.1.0-s verziója alapján íródott. A telepítés után ajánlott ellenőrizni, hogy a Python milyen verziójú OpenCV-t használ:

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

Megjegyezzük, hogy bár az OpenCV 3 a legújabb kiadás, a konvenció szerint a modul neve még mindig cv2.

Telepítés Windowsra (előre elkészített binárisok)

Az előre elkészített binárisok használata a leggyorsabb módja annak, hogy a Python OpenCV környezetet Windowson üzembe helyezzük. Jelenleg a cv2 modulnak csak a Python 2 verziója épül és szerepel a legújabb Windows kiadásban. A Python 3 támogatása (valamint más, nem szabványos funkciók/modulok hozzáadása) forrásból történő fordítást igényel – a részletekért lásd a hivatalos OpenCV dokumentációt.

Az OpenCV és a Python letöltése

Az OpenCV for Windows (3.1-es verzió, opencv-3.1.0.exe) letöltéséhez töltse le, és csomagolja ki egy szabadon választott könyvtárba. A Windows build tartalmaz egy 32 bites és egy 64 bites modult is a Python 2.7-hez.

A folytatás előtt győződjön meg róla, hogy rendelkezik egy működő Python 2.7-es telepítéssel, amely letölthető a Python weboldaláról. Ezt az útmutatót a Python 2.7.9 (x86 telepítő / x64 telepítő) használatával teszteltük. A telepítés során ajánlott engedélyezni, hogy a telepítőprogram hozzáadja a Pythont a PATH környezeti változóhoz, így a python és pip parancsértelmezőből futtatható.

Modulfüggőségek telepítése

A Python OpenCV cv2 modulhoz a NumPy és SciPy stackre is szükség van. Ennek megszerzéséhez először is győződjünk meg arról, hogy van egy működő python környezetünk, és telepítve van a pip (ha nincs, használjuk a fenti linkeket, és győződjünk meg arról, hogy a Python mappa a PATH változóban van).

Christoph Gohlke jelenleg néhány (nem hivatalos) előre elkészített Python csomagot biztosít Windowsra, beleértve a NumPy-t és a SciPy-t is. Töltse le a NumPy és a SciPy legújabb stabil verzióit, és telepítse őket a pip install .whl parancssorból történő hívásával. Vegye figyelembe, hogy a Python-környezetének (jelen esetben 2.7) és szóhosszának megfelelő verziót kell letöltenie. Például 32 bites rendszerek/értelmezők esetén:

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

És 64 bites rendszerek/értelmezők esetén:

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

A telepítés után a import numpy és import scipy futtatásával egy Python-értelmezőből ellenőrizni kell, hogy a modulok helyesen lettek-e telepítve. A numpy.__version__ és a scipy.__version__ segítségével ellenőrizhetjük, hogy a NumPy és a SciPy milyen verziója van telepítve.

A Python-OpenCV modul telepítése

Végül be kell másolnunk az OpenCV modult a helyi Python csomagokba. A opencv-3.0.0-rc1.exe-ből kicsomagolt fájlokban menjünk a opencv\build\python.7\ mappába, és nyissuk meg a x86\ (32 bites) vagy a x64\ (64 bites) mappát. Mindkettőben lesz egy cv2.pyd fájl.

Másolja a cv2.pyd fájlt közvetlenül a Python telepítés Lib\site-packages\ könyvtárába. A legtöbb felhasználó esetében ez a következő helyen található:

C:\Python27\Lib\site-packages 

Végül győződjön meg arról, hogy az OpenCV .dll fájlok valahol a rendszer %PATH% könyvtárában vannak, különösen a opencv_ffmpeg310.dll (vagy opencv_ffmpeg310_64.dll 64 bites rendszerek esetén) fájl, amely a videofájlok betöltéséhez szükséges.

Folytassa a telepítés ellenőrzése című szakaszt, hogy meggyőződjön arról, hogy minden helyesen lett telepítve, és az OpenCV új verzióját használja. Ne felejtse el megnézni a következő oldalt sem, a Migráció & Változások című részt, ahol a modult érintő változásokról és a meglévő kód frissítéséről olvashat részletesen.

Telepítés Linuxon (forrásból fordítás)

Noha ez az útmutató az Ubuntu 12.04/14.04 és más változatokhoz (pl. Xubuntu/Lubuntu/Kubuntu) készült, a folyamat nagyrészt azonosnak kell lennie más verziókon, valamint a hasonló Debian-szerű Linux-disztribúciókon is. Figyeljünk oda az egyes parancsok kimenetére, hogy megbizonyosodjunk arról, hogy minden megfelelően működött, és ha bármilyen probléma merülne fel a build folyamat során, a lehetséges enyhítési lehetőségekről lásd a dokumentum alján

Az OpenCV letöltése

Az OpenCV for Linux (3.1.0 verzió, opencv-3.1.0.zip) letöltésének megkezdéséhez töltsük le, és csomagoljuk ki egy tetszőleges könyvtárba (pl. ~/opencv-src). Hozzon létre egy build mappát az archívum kicsomagolásának mappájában (a CMakeLists.txt fájlt tartalmazó könyvtárban), és nyisson ott egy terminál munkamenetet. Például:

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

A következő parancsok mindegyikét magából a build almappából hajtsa végre, így a lefordított fájlok oda kerülnek.

A build függőségek telepítése

Az OpenCV lefordításához biztosítanunk kell, hogy a szükséges függőségek rendelkezésre álljanak, beleértve magukat a build eszközöket is. A szükségeseket Ubuntun a apt segítségével tudjuk beszerezni, de előbb a apt-get update futtatásával győződjünk meg arról, hogy a csomaglista naprakész. Ezután futtassuk le a következő parancsokat a szükséges csomagok beszerzéséhez (lásd alább az összes csomag egysoros listáját):

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

Egy sorban:

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

Megjegyezzük, hogy a további OpenCV modulokhoz/funkciókhoz (pl. GPU/CUDA támogatás, vagy Python 3 modul) a megfelelő fejlesztői/SDK csomagokat is le kell tölteni ezekhez a könyvtárakhoz. A fent felsorolt függőségek csak magának az OpenCV-nek és a Python 2.7 cv2 modulnak az építésére vonatkoznak.

Az OpenCV fordítása és telepítése

Most, hogy megvannak a szükséges építési függőségek, futtassuk a cmake futtatást (ismét az általunk létrehozott build/ könyvtárban) az OpenCV építéséhez szükséges Makefile létrehozásához:

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

Hiba esetén győződjünk meg arról, hogy az összes szükséges csomagot letöltöttük – a kimenet segíthet a hiányosságok felkutatásában. Ahhoz, hogy a Python modul biztosan megépüljön, a cmake futtatása után a python2 modult kell látnia a konfigurált modulok listájában:

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

Ha nem látja a python2 modult a “Megépítendő” listában, ellenőrizze, hogy telepítette-e a megfelelő Python fejlesztési csomagokat, távolítsa el az összes fájlt a build/ mappából, és próbálja meg újra futtatni a cmake parancsot.

Most, az OpenCV-t (és a Python modult) a make segítségével építhetjük, és telepíthetjük a rendszerünkre:

makesudo make install

Győződjünk meg róla, hogy a make meghívása után a build sikeres volt, és telepítés előtt ellenőrizzük a kimenetet. Ha építési problémákba/hibákba ütközünk, ismét győződjünk meg arról, hogy minden szükséges függőség és fejlécfájl megtalálható a rendszerünkön. Ha tényleges építési problémák vannak magával az OpenCV-vel, az alábbi Linux építési problémák szakaszban talál néhány lehetséges megoldási lehetőséget.

Az OpenCV 3.0-rc1 telepítésekor Ubuntu 12.04 rendszeren néhány hiányzó #define codec bejegyzéssel kapcsolatos építési hibába ütköztem. Mint említettem, az alábbiakban részletezzük az ehhez szükséges lépéseket, ha te is hasonló problémába ütköznél (a probléma a 3.1.0 és újabb verziókban megoldódik). Az Ubuntu 14.04 és újabb verzióknak sikeresen, módosítások nélkül kell felépülniük.

Ha a felépítés sikeres volt, de a make install futtatása után nem tudod import cv2 a Python shellből telepíteni, akkor a modult manuálisan is telepítheted a cv2.so fájl másolásával, amit az imént építettünk a build/lib/ mappában lévő /usr/local/lib/python2.7/dist-packages/ mappába. A build/ mappából ezt a következőképpen teheted meg:

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

Ez után a lépés után a cv2 modul telepítve van, és most már importálható a Python környezetedből. Folytassuk a Telepítés ellenőrzése című résszel, hogy megbizonyosodjunk arról, hogy minden helyesen lett telepítve, és ami még fontosabb, hogy az OpenCV megfelelő verzióját használja a Python. A következő oldalon, a Migráció & változások című oldalon is megnézheti a cv2 modult érintő változásokat, és azt, hogy milyen változtatásokat kell végrehajtani a meglévő kódon ahhoz, hogy a frissített modullal fusson.

A telepítés ellenőrzése

Amint korábban említettük, az alábbiak Python héjban történő végrehajtásával ellenőrizheti, hogy a cv2 modul helyesen lett-e telepítve:

import cv2print cv2.__version__

Ha a megfelelő verziószöveg jelenik meg (3.0.0-rc1 vagy újabb, ha újabb verziót használt), akkor ezen a ponton minden helyesen lett telepítve!

Megjegyezzük, hogy magában a cv2 modulhierarchiában is jelentős változások történtek, és előfordulhat, hogy az OpenCV 2.4.x-re írt Python programok már nem működnek megfelelően. Lásd a következő, Migrációs & változások című fejezetet a változások részleteiről, és arról, hogyan kell módosítani a programokat a változások kezeléséhez.

Linux Build Issues

Egyes rendszereken problémákba ütközhetsz magának az OpenCV-nek a fordításakor, attól függően, hogy milyen csomagok állnak rendelkezésre. Ha a megfelelő fejlécfájlok rendelkezésre állnak, de még mindig előfordulnak build problémák, próbálja megnézni, hogy az alábbiakban van-e valamilyen megoldás a problémára.

Undefined AV_CODEC_ID_... in ffmpeg_codecs.hpp

Ha olyan problémába ütközik, ahol a build hibákat az okozza, hogy bizonyos codec-ek nincsenek definiálva, akkor letölthet egy újabb verziót a ffmpeg_codecs.hpp-ből innen, és kicserélheti azt a letöltött/kivont forráskódban a modules/videoio/src/ mappában.

Alternatívaként manuálisan is deklarálhatja őket, ha magát a ffmpeg_codecs.hpp fájlt szerkeszti, hozzáadva a hiányzó codec bejegyzést a H263I-hez, és átnevezve a WNV-t WNV1-ra. A módosításokat az OpenCV GitHub projekt ezen commitjának megtekintésével láthatja.

Amikor a fájl frissítve van, újra meghívhatja a make fájlt a build/ mappából, és az OpenCV-nek most már hiba nélkül kell befejeznie a fordítást.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.