Příručka pro Python k OpenCV 3.0

Úvod a přehled

Tento dokument obsahuje pokyny pro instalaci a přechod na nejnovější verzi OpenCV (verze 3) a vazby pro Python. Kromě některých změn API došlo také ke změnám v rozhraní Pythonu (např. odstranění modulu cv2.cv), které mohou vyžadovat změny ve stávajícím kódu, aby fungoval s novou verzí modulu cv2. Po instalaci si přečtěte další stránku, Migrace & Změny, kde najdete podrobnosti týkající se změn modulu a pomoc při migraci stávajícího kódu Pythonu na novou verzi.

Tato stránka se zabývá instalací OpenCV 3 v systémech Windows (pomocí předpřipravených binárních souborů) a Linux (kompilovaných ze zdrojových kódů), včetně rozhraní Pythonu (modul cv2). OpenCV lze stáhnout z oficiálních stránek OpenCV. Všimněte si, že tato příručka je napsána na základě OpenCV verze 3.1.0. Po instalaci doporučujeme zkontrolovat verzi OpenCV, kterou Python používá:

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

Všimněte si, že ačkoli je OpenCV 3 nejnovější verzí, podle konvence se modul stále jmenuje cv2.

Instalace v systému Windows (předpřipravené binární soubory)

Použití předpřipravených binárních souborů je nejrychlejší způsob, jak zprovoznit prostředí Python OpenCV v systému Windows. V současné době je sestavena pouze verze modulu Python 2 cv2, která je součástí nejnovější verze systému Windows. Podpora jazyka Python 3 (stejně jako přidání dalších nestandardních funkcí/modulů) vyžaduje kompilaci ze zdrojových kódů – podrobnosti naleznete v oficiální dokumentaci OpenCV.

Stažení OpenCV a Pythonu

Pro začátek si stáhněte OpenCV pro Windows (verze 3.1, opencv-3.1.0.exe) a rozbalte jej do vybraného adresáře. Sestavení pro Windows obsahuje 32bitový i 64bitový modul pro Python 2.7.

Před pokračováním se ujistěte, že máte funkční instalaci Pythonu 2.7, kterou si můžete stáhnout z webových stránek Pythonu. Tato příručka byla testována s použitím Pythonu 2.7.9 (instalační program x86 / instalační program x64). Při instalaci doporučujeme povolit instalátoru přidat Python do proměnné prostředí PATH, abyste mohli spustit python a pip z příkazového řádku.

Závislosti modulů

Modul Python OpenCV cv2 vyžaduje zásobník NumPy i SciPy. Chcete-li jej získat, ujistěte se nejprve, že máte funkční prostředí python a nainstalovaný pip (pokud ne, použijte odkazy výše a ujistěte se, že složka Python je ve vaší proměnné PATH).

Christoph Gohlke v současné době poskytuje některé (neoficiální) předpřipravené balíčky Pythonu pro Windows, včetně NumPy a SciPy. Stáhněte si nejnovější stabilní verze NumPy a SciPy a nainstalujte je voláním pip install .whl z příkazového řádku. Všimněte si, že byste měli stáhnout verzi odpovídající vašemu prostředí Pythonu (v tomto případě 2.7) a délce slova. Například pro 32bitové systémy/interprety:

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

A pro 64bitové systémy/interprety:

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

Po instalaci byste měli být schopni spustit import numpy a import scipy z interpretu jazyka Python, abyste si ověřili, že moduly byly nainstalovány správně. Jaké verze NumPy a SciPy jsou nainstalovány, můžete zjistit z numpy.__version__, respektive scipy.__version__.

Instalace modulu Python-OpenCV

Nakonec musíme zkopírovat modul OpenCV do lokálních balíčků Pythonu. V souborech rozbalených z opencv-3.0.0-rc1.exe přejděte do složky opencv\build\python.7\ a otevřete buď složku x86\ (pro 32bitové), nebo x64\ (pro 64bitové). V každé z nich bude soubor cv2.pyd.

Zkopírujte cv2.pyd přímo do adresáře Lib\site-packages\ vaší instalace Pythonu. U většiny uživatelů se bude nacházet na adrese:

C:\Python27\Lib\site-packages 

Nakonec se ujistěte, že soubory OpenCV .dll jsou někde v adresáři %PATH% vašeho systému, zejména soubor opencv_ffmpeg310.dll (nebo opencv_ffmpeg310_64.dll pro 64bitové systémy) potřebný pro načítání souborů videa.

Pokračujte v části Ověření instalace a ujistěte se, že vše bylo nainstalováno správně a že se používá nová verze OpenCV. Nezapomeňte se také podívat na další stránku, Migrace & Změny, kde najdete podrobnosti o změnách modulu a aktualizaci stávajícího kódu.

Instalace v Linuxu (kompilace ze zdrojových kódů)

Ačkoli je tento návod napsán pro Ubuntu 12.04/14.04 a další varianty (např. Xubuntu/Lubuntu/Kubuntu), postup by měl být z velké části stejný i v jiných verzích a také v podobných distribucích Linuxu podobných Debianu. Věnujte pozornost výstupu jednotlivých příkazů, abyste se ujistili, že vše proběhlo správně, a pokud se během procesu sestavování vyskytnou nějaké problémy, podívejte se na konec tohoto dokumentu, kde najdete možná řešení

Stažení OpenCV

Na začátek stáhněte OpenCV pro Linux (verze 3.1.0, opencv-3.1.0.zip) a rozbalte jej do adresáře dle vlastního výběru (např. ~/opencv-src). Vytvořte adresář build uvnitř adresáře, kam byl archiv rozbalen (adresář obsahující soubor CMakeLists.txt), a otevřete v něm relaci terminálu. Například:

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

Vykonejte všechny následující příkazy ze samotné podsložky build, takže zkompilované soubory budou umístěny tam.

Instalace závislostí sestavení

Chceme-li zkompilovat OpenCV, musíme zajistit, aby byly k dispozici požadované závislosti, včetně samotných nástrojů pro sestavení. Ty potřebné můžeme v Ubuntu získat pomocí příkazu apt, ale nejprve se ujistěte, že je seznam balíčků aktuální, a to spuštěním příkazu apt-get update. Poté proveďte následující příkazy pro získání požadovaných balíčků (jejich jednořádkový seznam naleznete níže):

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

V jednom řádku:

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

Poznamenejte, že pro další moduly/funkce OpenCV (např. podpora GPU/CUDA nebo modul Python 3) je třeba stáhnout také příslušné vývojové/SDK balíčky pro tyto knihovny. Výše uvedené závislosti se týkají pouze sestavení samotného OpenCV a modulu Python 2.7 cv2.

Kompilování a instalace OpenCV

Teď, když máme potřebné závislosti pro sestavení, spusťte cmake (opět v adresáři build/, který jsme vytvořili) a vygenerujte soubor Makefile pro sestavení OpenCV:

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

Pokud se objeví nějaké chyby, ujistěte se, že jste stáhli všechny požadované balíčky – výstup by měl pomoci zjistit, co chybí. Chcete-li se ujistit, že modul Python bude sestaven, měli byste po spuštění příkazu cmake vidět v seznamu nakonfigurovaných modulů modul python2:

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

Pokud modul python2 v seznamu “To be built” nevidíte, zkontrolujte, zda máte nainstalovány správné vývojové balíčky Pythonu, odstraňte všechny soubory ze složky build/ a zkuste znovu spustit příkaz cmake.

Nyní můžeme sestavit OpenCV (a modul Python) pomocí make a nainstalovat jej do našeho systému:

makesudo make install

Po volání make se ujistěte, že sestavení proběhlo úspěšně, a před instalací zkontrolujte výstup. Pokud narazíte na problémy/chyby při sestavování, opět se ujistěte, že máte v systému všechny požadované závislosti a hlavičkové soubory. Pokud se vyskytnou skutečné problémy se sestavením samotného OpenCV, podívejte se na níže uvedenou část Problémy se sestavením v Linuxu, kde najdete některá možná řešení.

Při instalaci OpenCV 3.0-rc1 na Ubuntu 12.04 jsem narazil na chyby sestavení týkající se některých chybějících položek kodeku #define. Jak již bylo zmíněno, v případě, že narazíte na stejný problém (problém by měl být vyřešen ve verzi 3.1.0 a vyšší), jsou níže uvedeny podrobné kroky, jak to udělat. Ubuntu 14.04 a vyšší by mělo sestavení proběhnout úspěšně bez nutnosti jakýchkoli úprav.

Pokud sestavení proběhlo úspěšně, ale po spuštění make install nemůžete import cv2 ze shellu Pythonu, můžete modul nainstalovat ručně zkopírováním souboru cv2.so, který jsme právě sestavili ve složce build/lib/ do /usr/local/lib/python2.7/dist-packages/. Ze složky build/ to lze provést takto:

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

Po tomto kroku je modul cv2 nainstalován a může být nyní importován vaším prostředím Pythonu. Pokračujte k části Ověření instalace, abyste se ujistili, že vše bylo nainstalováno správně, a co je důležitější, že Python používá správnou verzi OpenCV. Můžete se také podívat na další stránku, Migrace & Změny, kde najdete podrobnosti o změnách modulu cv2 a o tom, jaké změny je třeba provést ve stávajícím kódu, aby fungoval s aktualizovaným modulem.

Ověření instalace

Jak již bylo zmíněno, můžete ověřit, zda byl modul cv2 správně nainstalován, provedením následujícího příkazu v shellu Pythonu:

import cv2print cv2.__version__

Pokud se vypíše správný řetězec verze (3.0.0-rc1 nebo novější, pokud jste použili novější verzi), je v tomto okamžiku vše nainstalováno správně!

Upozorňujeme, že v samotné hierarchii modulů cv2 došlo k několika zásadním změnám a programy v jazyce Python napsané s ohledem na verzi OpenCV 2.4.x již nemusí fungovat správně. Podrobnosti o změnách a o tom, jak upravit programy, aby se s nimi vypořádaly, najdete v následující části Migrace & Změny.

Problémy při sestavování v Linuxu

Na některých systémech můžete narazit na problémy při kompilaci samotného OpenCV v závislosti na tom, jaké balíčky jsou k dispozici. Pokud jsou k dispozici správné hlavičkové soubory, ale přesto dochází k problémům při sestavování, zkuste se podívat, zda neexistuje nějaké řešení problému.

Nedefinovaný AV_CODEC_ID_... v ffmpeg_codecs.hpp

Pokud narazíte na problém, kdy jsou chyby při sestavování způsobeny tím, že nejsou definovány určité kodeky, můžete si odtud stáhnout novější verzi ffmpeg_codecs.hpp a nahradit ji ve zdrojovém kódu, který jste stáhli/extrahovali ve složce modules/videoio/src/.

Případně je můžete deklarovat ručně úpravou samotného souboru ffmpeg_codecs.hpp přidáním chybějící položky kodeku H263I a přejmenováním WNV na WNV1. Jaké změny je třeba provést, můžete zjistit zobrazením této revize z projektu OpenCV GitHub.

Po aktualizaci souboru můžete znovu zavolat make ze složky build/ a OpenCV by nyní měl dokončit kompilaci bez chyby.

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.