- Wprowadzenie i przegląd
- Instalacja w systemie Windows (wstępnie wbudowane binarki)
- Pobieranie OpenCV i Pythona
- Instalowanie zależności modułów
- Instalacja modułu Python-OpenCV
- Instalacja na Linuksie (kompilacja ze źródła)
- Pobieranie OpenCV
- Instalowanie zależności budujących
- Kompilacja i instalacja OpenCV
- Weryfikacja instalacji
- Problemy z kompilacją w systemie Linux
- Undefined AV_CODEC_ID_... in ffmpeg_codecs.hpp
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.