OpenCV 3.0 Python Guide

Wprowadzenie i przegląd

Ten dokument zawiera instrukcje dotyczące instalacji i migracji do najnowszego wydania OpenCV (wersja 3). Oprócz niektórych zmian w API, wprowadzono również zmiany w interfejsie Pythona (np. usunięcie cv2.cv), które mogą wymagać zmian w istniejącym kodzie, aby działał z nową wersją modułu cv2. Po instalacji zobacz następną stronę, Zmiany migracyjne &, aby poznać szczegóły dotyczące zmian w module i uzyskać pomoc w migracji istniejącego kodu Pythona do nowej wersji.

Niniejsza strona omawia instalację OpenCV 3 w systemach Windows (przy użyciu wstępnie zbudowanych binariów) i Linux (skompilowanych ze źródła), w tym interfejs Pythona (moduł cv2). OpenCV można pobrać z oficjalnej strony OpenCV. Należy pamiętać, że niniejszy przewodnik został napisany w oparciu o OpenCV w wersji 3.1.0. Po instalacji zalecane jest sprawdzenie wersji OpenCV, z której korzysta Python:

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

Zauważ, że chociaż OpenCV 3 jest najnowszym wydaniem, zgodnie z konwencją moduł nadal nosi nazwę cv2.

Instalacja w systemie Windows (wstępnie wbudowane binarki)

Użycie wstępnie wbudowanych binarek to najszybszy sposób na uruchomienie środowiska Pythona OpenCV w systemie Windows. Obecnie, tylko wersja Pythona 2 modułu cv2 jest zbudowana i zawarta w najnowszym wydaniu dla Windows. Wsparcie dla Pythona 3 (jak również dodanie innych niestandardowych funkcji/modułów) wymaga kompilacji ze źródła – szczegóły w oficjalnej dokumentacji OpenCV.

Pobieranie OpenCV i Pythona

Aby rozpocząć, pobierz OpenCV dla Windows (wersja 3.1, opencv-3.1.0.exe) i rozpakuj go do wybranego katalogu. Wersja dla Windows zawiera zarówno 32-bitowy, jak i 64-bitowy moduł dla Pythona 2.7.

Przed kontynuowaniem upewnij się, że masz działającą instalację Pythona 2.7, którą można pobrać z witryny Pythona. Ten przewodnik został przetestowany przy użyciu Pythona 2.7.9 (instalator x86 / instalator x64). Podczas instalacji zalecane jest zezwolenie instalatorowi na dodanie Pythona do zmiennej środowiskowej PATH, aby można było uruchomić python i pip z wiersza poleceń.

Instalowanie zależności modułów

Moduł Python OpenCV cv2 wymaga zarówno stosu NumPy, jak i SciPy. Aby to uzyskać, najpierw upewnij się, że masz działające środowisko python i masz zainstalowany pip (jeśli nie, użyj powyższych linków i upewnij się, że folder Python jest w twojej zmiennej PATH).

Christoph Gohlke obecnie dostarcza kilka (nieoficjalnych) gotowych pakietów Pythona dla Windows, w tym NumPy i SciPy. Pobierz najnowsze stabilne wersje NumPy i SciPy, a następnie zainstaluj je wywołując pip install .whl z wiersza poleceń. Zwróć uwagę, że powinieneś pobrać wersję odpowiadającą twojemu środowisku Pythona (w tym przypadku 2.7) i długości słowa. Na przykład, w systemach 32-bitowych:

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

And for 64-bit systems/interpreters:

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

Po zainstalowaniu powinieneś być w stanie uruchomić import numpy i import scipy z interpretera Pythona, aby sprawdzić, czy moduły zostały zainstalowane poprawnie. Możesz sprawdzić, jakie wersje NumPy i SciPy są zainstalowane odpowiednio z numpy.__version__ i scipy.__version__.

Instalacja modułu Python-OpenCV

Na koniec musimy skopiować moduł OpenCV do lokalnych pakietów Pythona. W plikach wyodrębnionych z opencv-3.0.0-rc1.exe przejdź do folderu opencv\build\python.7\ i otwórz folder x86\ (dla 32-bitowych) lub x64\ (dla 64-bitowych). W każdym z nich będzie znajdował się plik cv2.pyd.

Kopiuj plik cv2.pyd bezpośrednio do katalogu Lib\site-packages\ Twojej instalacji Pythona. Dla większości użytkowników będzie się on znajdował pod adresem:

C:\Python27\Lib\site-packages 

Na koniec upewnij się, że pliki OpenCV .dll znajdują się gdzieś w katalogu %PATH% systemu, zwłaszcza plik opencv_ffmpeg310.dll (lub opencv_ffmpeg310_64.dll dla systemów 64-bitowych) wymagany do ładowania plików wideo.

Przejdź do sekcji Weryfikacja instalacji, aby upewnić się, że wszystko zostało zainstalowane poprawnie, a nowa wersja OpenCV jest używana. Sprawdź również następną stronę, Migration & Changes, aby dowiedzieć się więcej o zmianach w module i aktualizacji istniejącego kodu.

Instalacja na Linuksie (kompilacja ze źródła)

Mimo że ten przewodnik jest napisany dla Ubuntu 12.04/14.04 i innych wariantów (np. Xubuntu/Lubuntu/Kubuntu), proces powinien być w dużej mierze taki sam w innych wersjach, jak również w podobnych dystrybucjach Linuksa typu Debian. Zwróć uwagę na wynik każdego polecenia, aby upewnić się, że wszystko zadziałało poprawnie, a jeśli wystąpią jakiekolwiek problemy podczas procesu budowania, zapoznaj się z dolną częścią tego dokumentu, aby znaleźć możliwe środki zaradcze

Pobieranie OpenCV

Aby rozpocząć, pobierz OpenCV dla Linuksa (wersja 3.1.0, opencv-3.1.0.zip) i rozpakuj go do wybranego katalogu (np. ~/opencv-src). Utwórz katalog build wewnątrz katalogu, z którego zostało rozpakowane archiwum (katalog zawierający plik CMakeLists.txt), i otwórz w nim sesję terminalową. Na przykład:

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

Wykonaj wszystkie poniższe polecenia z samego podfolderu build, dzięki czemu skompilowane pliki zostaną tam umieszczone.

Instalowanie zależności budujących

Aby skompilować OpenCV, musimy upewnić się, że wymagane zależności są dostępne, w tym same narzędzia budujące. Możemy je uzyskać za pomocą apt na Ubuntu, ale najpierw upewnijmy się, że lista pakietów jest aktualna, uruchamiając apt-get update. Następnie wykonaj następujące polecenia, aby uzyskać wymagane pakiety (zobacz poniżej, aby uzyskać jednolinijkową listę wszystkich):

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

W pojedynczej linii:

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

Zauważ, że dla dodatkowych modułów/funkcji OpenCV (np. wsparcie dla GPU/CUDA, lub moduł Python 3), będziesz musiał pobrać odpowiednie pakiety rozwojowe/SDK dla tych bibliotek, jak również. Zależności wymienione powyżej dotyczą tylko budowy samego OpenCV i modułu Pythona 2.7 cv2.

Kompilacja i instalacja OpenCV

Gdy mamy już wymagane zależności, uruchamiamy cmake (ponownie w utworzonym katalogu build/), aby wygenerować plik Makefile do budowy OpenCu:

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

Jeśli wystąpią jakieś błędy, upewnijmy się, że po się pobrać wszystkie wymagane pakiety – dane wyjściowe powinny pomóc w ustaleniu, czego brakuje. Aby mieć pewność, że moduł Pythona zostanie zbudowany, powinieneś zobaczyć python2 na liście skonfigurowanych modułów po uruchomieniu polecenia cmake:

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

Jeśli nie widzisz modułu python2 na liście “Do zbudowania”, sprawdź, czy masz zainstalowane odpowiednie pakiety Pythona, usuń wszystkie pliki z folderu build/ i spróbuj ponownie uruchomić polecenie cmake.

Teraz możemy zbudować OpenCV (i moduł Pythona) przy użyciu make i zainstalować go w naszym systemie:

makesudo make install

Upewnij się, że kompilacja zakończyła się sukcesem po wywołaniu make, i sprawdź dane wyjściowe przed instalacją. Jeśli napotkasz problemy z kompilacją, ponownie upewnij się, że posiadasz wszystkie wymagane zależności i pliki nagłówkowe w swoim systemie. Jeśli występują problemy z kompilacją samego OpenCV, zobacz sekcję Problemy z kompilacją w Linuksie poniżej, aby znaleźć możliwe obejścia.

Podczas instalacji OpenCV 3.0-rc1 na Ubuntu 12.04, napotkałem błędy kompilacji dotyczące brakujących wpisów kodeków #define. Jak wspomniano, kroki, aby to zrobić są wyszczególnione poniżej, jeśli napotkasz ten sam problem (problem powinien być rozwiązany w wersji 3.1.0 i wyższej). Ubuntu 14.04 i nowsze powinny zbudować się pomyślnie, nie wymagając żadnych modyfikacji.

Jeśli kompilacja się powiodła, ale nie możesz import cv2 z powłoki Pythona po uruchomieniu make install, możesz zainstalować moduł ręcznie, kopiując plik cv2.so, który właśnie zbudowaliśmy w folderze build/lib/, do /usr/local/lib/python2.7/dist-packages/. Z folderu build/ można to zrobić przez:

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

Po tym kroku moduł cv2 jest zainstalowany i może być teraz importowany przez środowisko Pythona. Przejdź do sekcji Weryfikacja instalacji, aby upewnić się, że wszystko zostało zainstalowane poprawnie, a co ważniejsze, że Python korzysta z właściwej wersji OpenCV. Możesz również sprawdzić następną stronę, Migracja & Zmiany, aby uzyskać szczegółowe informacje o zmianach w module cv2 oraz o tym, jakie zmiany należy wprowadzić w istniejącym kodzie, aby działał on ze zaktualizowanym modułem.

Weryfikacja instalacji

Jak wspomniano wcześniej, można sprawdzić, czy moduł cv2 został zainstalowany poprawnie, wykonując poniższe polecenie w powłoce Pythona:

import cv2print cv2.__version__

Jeśli wyświetlany jest prawidłowy łańcuch wersji (3.0.0-rc1 lub nowszy, jeśli użyłeś nowszej wersji), wszystko jest w tym momencie zainstalowane poprawnie!

Uwaga, że są pewne poważne zmiany w hierarchii modułów cv2, a programy Pythona napisane z myślą o OpenCV 2.4.x mogą już nie działać poprawnie. Zobacz następną sekcję, Zmiany migracyjne &, aby poznać szczegóły zmian i dowiedzieć się, jak zmodyfikować programy, aby poradzić sobie z tymi zmianami.

Problemy z kompilacją w systemie Linux

W niektórych systemach możesz napotkać problemy podczas kompilacji samego OpenCV, w zależności od tego, jakie pakiety są dostępne. Jeśli odpowiednie pliki nagłówkowe są dostępne, ale problemy z kompilacją nadal występują, spróbuj sprawdzić, czy istnieją jakieś poniższe obejścia tego problemu.

Undefined AV_CODEC_ID_... in ffmpeg_codecs.hpp

Jeśli napotkasz problem, w którym błędy kompilacji są spowodowane niezdefiniowaniem pewnych kodeków, możesz pobrać nowszą wersję ffmpeg_codecs.hpp stąd i zastąpić ją w kodzie źródłowym, który pobrałeś/wyekstrahowałeś w folderze modules/videoio/src/.

Alternatywnie możesz zadeklarować je ręcznie, edytując sam plik ffmpeg_codecs.hpp, dodając brakujący wpis o kodeku dla H263I i zmieniając nazwę WNV na WNV1. Możesz zobaczyć, jakie zmiany należy wprowadzić, przeglądając ten commit z projektu OpenCV GitHub.

Po zaktualizowaniu pliku możesz ponownie wywołać make z folderu build/, a OpenCV powinien teraz zakończyć kompilację bez błędu.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.