Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak zainstalować OpenCV 3 na Raspbian Jessie

ghost666 22 Cze 2016 17:35 2580 0
  • Jak zainstalować OpenCV 3 na Raspbian Jessie
    Jakiś czas temu już udostępniono Raspbiana Jessie z ogromną ilością nowych funkcji. Niestety nowa wersja popularnego systemu sprawiła, że OpenCV dla Pythona instaluje się już odmiennie niż miało to miejsce dla Raspbiana Wheezy (w artykule źródłowym znaleźć można odnośniki do instalacji OpenCV na tym systemie - w wersji 2.4 dla Pythona 2.7 i w wersji 3.0 dla Pythona 2.7/3+).

    W związku z powyższym, konieczne stało się opracowanie nowego tutoriala, dotyczącego instalowania OpenCV wraz bindingami dla Pythona na Raspbianie Jessie.

    Założenia

    W poniższym tutorialu zakładamy, że posiadamy Raspberry Pi w wersji 2 wraz z zainstalowanym Raspbianem Jessie. Oprócz tego musimy mieć albo fizyczny dostęp do komputera albo też możliwość połączenia się z systemem poprzez SSH - wszystko po to, aby mieć dostęp do terminala. Dokładny sposób realizacji tego dostępu nie jest jednak istotny.

    Instalacja OpenCV 3 na Raspbianie Jessie

    Instalacja OpenCV 3 to wieloetapowy proces, który zajmuje dużo, a nawet bardzo dużo czasu (czasy realizacji bardziej czasochłonnych poleceń zapisano pod kodem, jaki wpisujemy w terminal - wiadomo, kiedy możemy zarezerwować sobie czas na kawę). Proces ten wymaga zainstalowania wielu zależności i wstępnie wymaganych komponentów. Poniższy tutorial ma za zadanie przeprowadzić użytkownika Raspbiana Jessie przez proces instalacji potrzebnych komponentów i zależności oraz OpenCV.

    Zajmijmy się zatem instalacją OpenCV:

    Krok 1: Instalacja zależności

    Pierwszą rzeczą, jaką musimy zrobić to update i upgrade zainstalowanych pakietów, a następnie update firmware samego Raspberry Pi:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Potrzebny czas: 3m 33s

    Następnie musimy zrestartować naszą maszynę (jest to konieczne po update firmware):

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Następnie instalujemy kilka narzędzi deweloperskich, jakie potrzebne nam będą w dalszej części instalacji:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Potrzebny czas: 51s

    Teraz możemy przejść do instalacji pakietu umożliwiającego czytanie i zapisywanie obrazów w formatach takich jak JPEG, PNG, TIFF, etc.:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Potrzebny czas: 42s

    I tak samo, jak potrzebne są nam pakiety I/O dla obrazów, potrzebne są analogicznie dla filmów. Instalowane poniższymi komendami pakiety umożliwiają zarówno wczytywanie filmów w wielu formatach, jak i wczytywanie strumieni wideo:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Potrzebny czas: 58s

    W kolejnym kroku musimy zainstalować biblioteki deweloperskie GTK, aby możliwe było skompilowanie highgui - podmodułu OpenCV, który odpowiedzialny jest za wyświetlanie obrazów na ekranie i budowę prostych GUI do obsługi OpenCV. Aby zainstalować GTK, wpisujemy:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Potrzebny czas: 2m 48s

    Jeśli chcemy zoptymalizować działanie szeregu operacji wykonywanych przez OpenCV (takich jak operacje macierzowe), możemy zainstalować dodatkową zależność:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Potrzebny czas: 50s

    Finalnie musimy zainstalować pliki nagłówkowe dla Pythona 2.7 lub Pythona 3, aby można było skompilować wiązania OpenCV z Pythonem:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Krok 2: Pobranie kodów źródłowych OpenCV

    Gdy mamy już spełnione wszystkie wstępne wymagania co do pakietów i zależności, musimy pobrać kody źródłowe najnowszej wersji OpenCV - w czasie pisania artykułu była to wersja 3.0.0, jeśli chcemy pobrać inną lub nowszą wystarczy zamienić "3.0.0" innymi cyframi:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Potrzebny czas: 2m 29s

    Dla pełnej instalacji OpenCV w wersji 3 (tj. takiej, która zawiera w sobie funkcje takie jak SIFT czy SURF) musimy pobrać także repozytorium opencv_contrib. Co niezmiernie ważne, to repozytorium musi być w takiej samej wersji, w jakiej jest repo samego OpenCV, inaczej przy kompilacji dostaniemy błędy. Na przykład, jeśli repo opencv pobraliśmy jak powyżej, w wersji 3.0.0 to i opencv_contrib pobrać musimy w wersji 3.0.0:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Potrzebny czas: 1m 54s

    Krok 3: Konfiguracja Pythona

    Pierwszym krokiem jest skonfigurowanie Pythona tak, aby móc skompilować OpenCV. Rozpoczynamy od instalacji pip-a, menedżera pakietów do Pythona:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Potrzebny czas: 26s

    Wykorzystanie pakietów takich jak virtualenv czy virtualenvwrapper było wielokrotnie poruszane, np. na blogu PyImageSearch, szczególnie w kontekście tutoriali instalacyjnych OpenCV. Zainstalowanie tych pakietów z pewnością nie jest wymagane, aby uruchomić OpenCV wraz z Pythonem na Raspberry Pi, jednakże autor poradnika istotnie rekomenduje, aby z nich skorzystać.

    Wykorzystanie virtualenv oraz virtualenvwrapper pozwala na stworzenie wirtualnego, izolowanego środowiska Pythona, zupełnie osobnego od systemowej instalacji tego środowiska. Oznacza to, że można w każdym wirtualnym środowisku mieć inną wersję Pythona wraz z innymi wersjami bibliotek do niego. Idealnie rozwiązuje to problemy, gdzie "Projekt A wymaga biblioteki w wersji 1.x, a projekt B w wersji 4.x", które często zdarzają się inżynierom oprogramowania.

    W środowisku użytkowników Pythona wykorzystanie opisanych bibliotek do tworzenia wirtualnych środowisk jest popularne i szeroko sugerowane, więc jeśli nie korzystasz z nich dotychczasowo, to dobrze jest zacząć. Instalujemy te biblioteki poprzez pip-a:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Potrzebny czas: 17s

    Po zainstalowaniu opisanych powyżej bibliotek konieczne jest odświeżenie zawartości pliki ~/.profile i dodanie w nim, na samym dole, linijek:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Do edycji tego pliku wykorzystać można dowolny edytor tekstu, z jakiego zazwyczaj korzystamy: vim, emacs, nano czy któryś z edytorów graficznych, dostępnych w Raspbianie Jessie. Aby to zrobić, otwieramy plik znajdujący się w /home/pi/.profile i kopiujemy powyższe linijki na koniec pliku.

    Teraz, gdy przeedytowaliśmy plik ~/.profile musimy ponownie go załadować, aby zmiany weszły w życie. Możemy to zrobić na dwa sposoby: po pierwsze - przelogować się w systemie, po drugie - zamknąć terminal i otworzyć nowy lub wykorzystać komendę source:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Uwaga: z komendy source[/b] korzystać powinniśmy przy każdym otwarciu nowego terminala, aby upewnić się, że środowisko zostało poprawnie zainstalowane.

    W kolejnym kroku musimy stworzyć wirtualne środowisko dla naszego Pythona, w którym używać będziemy OpenCV do analizy obrazów:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Powyższe polecenie stworzy wirtualne środowisko pod nazwą cv, które działać będzie pod Pythonem 2.7. Jeśli chcemy wykonać podobną operację, ale dla Pythona 3, wpisać musimy:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Wykorzystując wirtualne środowisko cv, pamiętać musimy, że jest ono zupełnie niezależne od domyślnej wersji Pythona, jaki znajduje się w naszym systemie operacyjnym Raspbian Jessie. Jeśli po reboocie, przelogowaniu lub w nowym oknie terminala skorzystać będziemy chcieli z wcześniej stworzonego środowiska (a nie pracować w domyślnym, które otwierane jest w takiej sytuacji) wykorzystać musimy komendę [i]workon
    :

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Aby upewnić się, w jakim środowisku aktualnie się znajdujemy, wystarczy spojrzeć na linię komend: jeśli widzimy "(cv) przed promptem, to jesteśmy w wirtualnym środowisku cv:

    Jak zainstalować OpenCV 3 na Raspbian Jessie


    W innym przypadku jesteśmy w domyślnym środowisku systemowym:

    Jak zainstalować OpenCV 3 na Raspbian Jessie


    Jeśli nie jesteśmy w środowisku cv i chcemy do niego wejść, wykonać musimy właśnie wymienione powyżej komendy - source oraz [i]workon[/i[.

    Zakładając, że jesteśmy już w wirtualnym środowisku cv, możemy zainstalować bibliotekę NumPy oraz zaimportować zależności kompilując bindingi Pythona dla OpenCV. Download i instalacja NumPy zajmie trochę czasu, więc można iść zrobić sobie kawę. Aby zainstalować numpy wpisujemy:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Potrzebny czas: 16m 10s

    Krok 4: Kompilacja i instalacja OpenCV

    Na tym etapie jesteśmy już gotowi na kompilację OpenCV. Proces rozpoczynamy od upewnienia się, że jesteśmy w odpowiednim środowisku:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    A następnie przystępujemy do budowania aplikacji:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Uwaga: Jeśli korzystamy z wersji 3.1.0 OpenCV, to musimy ustawić -D INSTALL_C_EXAMPLES=OFF (a nie ON, jak w powyższym przykładnie). Wynika to z pewnego błędu, jaki jest w skrypcie CMake OpenCV w wersji 3.1.0 - w sytuacji, gdy opcja ta ustawiona będzie na ON, podczas budowania pojawić się mogą pewne problemy.

    Przed przejściem do kompilacji kodu OpenCV należy zajrzeć do pliku wynikowego CMake, aby upewnić się, że wszystko jest w porządku. W pliku przewijamy do sekcji zatytułowanej Python 2 lub Python 3 (zależnie od tego pod którego Pythona instalujemy OpoenCV) i sprawdzamy, czy sekcja ta wygląda tak, jak zaznaczony na czerwono obszar na poniższym obrazku:

    Jak zainstalować OpenCV 3 na Raspbian Jessie


    Warto zwrócić uwagę, że zmienne wskazujące na interpreter Pythona i na NumPy, wskazują na wirtualne środowisko cv.

    Wersja skryptu CMake dla Pythona 3 wygląda natomiast następująco:

    Jak zainstalować OpenCV 3 na Raspbian Jessie


    Ponownie jak i powyżej - zmienne wskazują na środowisko wirtualne.

    Jeśli w naszym skrypcie jest inaczej musimy powtórzyć cmake, upewniając się przed tym, że znajdujemy się w środowisku wirtualnym cv, jakie sobie stworzyliśmy wcześniej.

    Teraz, po zbudowaniu wszystkich potrzebnych plików, możemy przystąpić do kompilacji OpenCV:

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    Potrzebny czas: 1h 35m

    Przełącznik -j4 przy make wskazuje, ile rdzeni wykorzystać ma kompilator podczas pracy. Jako że pracujemy na Raspberry Pi 2, wykorzystać możemy wszystkie 4, aby umożliwić sobie szybką kompilację programu. Jednakże, jeśli z jakiegoś powodu make zwraca nam błędy podczas kompilacji, rozpocznijmy ją ponownie, tym razem wykorzystując tylko jeden rdzeń procesora:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Wykorzystanie tylko jednego rdzenia, z jednej strony ustrzeże nas przed dziwnymi błędami związanymi z wyścigiem zależności, ale z drugiej strony taka kompilacja zajmie o wiele więcej czasu.

    Zakładając, że OpenCV skomplikowało się bez błędów, jedyne, co musimy teraz zrobić, to zainstalować je w naszym systemie:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Krok 5: dokańczanie instalacji

    Już prawie skończyliśmy! Zostało tylko kilka prostych czynności, aby dokończyć instalację.

    Dla Pythona 2.7

    Jeśli krok 4 zrealizowaliśmy do końca bez błędów, to OpenCV powinno być zainstalowane w /usr/local/lib/python2.7/site-packages :

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Jeśli nie widzimy w tym folderze OpenCV, nie załamujmy się - czasami OpenCV instaluje się w /usr/local/lib/python2.7/dist-packages - jeśli pliku cv2.so nie ma w pierwszym z wymienionych folderów, poszukajmy go w drugim. Gdy już to zrobimy, musimy dodać sym-link dla naszego wirtualnego środowiska cv:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Dla Pythona 3+

    OpenCV powinno znajdować się w /usr/local/lib/python3.4/site-packages :

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Z jakichś dziwnych względów, po kompilacji OpenCV dla Pythona 3 plik nazywać się będzie: cv2.cpython-34m.so zamiast po prostu cv2.so. Aby nie martwić się tym, można po prostu zmienić nazwę pliku:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    a następnie symlonkować OpenCV do naszego wirtualnego środowiska cv:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Krok 5: weryfikacja instalacji OpenCV 3

    Na tym etapie OpenCV powinno już być poprawnie zainstalowane na Raspbianie Jessie. Jednakże zanim skończymy tutorial, warto sprawdzić, czy instalacja przebiegła prawidłowo. W tym celu musimy uruchomić wirtualne środowisko cv, jakie stworzyliśmy, uruchomić Pythona i zaimportować OpenCV, aby sprawdzić dowiązania:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Jak widać na poniższym zrzucie ekranu, OpenCV 3 zostało poprawnie zainstalowane:

    Jak zainstalować OpenCV 3 na Raspbian Jessie


    Źródło: http://www.pyimagesearch.com/2015/10/26/how-to-install-opencv-3-on-raspbian-jessie/

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 napisał 9475 postów o ocenie 7235, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.