opencv-logo2

Projekte, Webserver

OpenCV auf dem Raspberry Pi installieren

Wer sich mit Bildverarbeitung im Bezug zum Raspberry Pi beschäftigt hat, wird früher oder später über die Bibliothek OpenCV stoßen. Dabei werden viele sehr nützliche Funktionen wie Gesichtserkennung, das Erstellen von Tiefenkarten (Stereo Vision, Optical Flow), Texterkennung oder auch für Machine Learning bereit gestellt. Außerdem kann man OpenCV (Open Source Computer Vision) sowohl in seine C++ Dateien als auch in seine Python Skripte einbinden.
Gerade im Bezug auf Feature-Erkennung in Bildern, welche vom Raspberry Pi aufgenommen wurden, ist OpenCV sehr hilfreich.

In diesem Tutorial für Fortgeschrittene wird die Installation von OpenCV auf dem Raspberry Pi und das einbinden in Python gezeigt.



 

Vorerst möchte ich jedem ans Herz legen einen Raspberry Pi 2 Model B zu verwenden, da dieser um einiges leistungsstärker als die Vorgänger ist. Selbst auf einem Raspberry Pi B+ dauert das Kompilieren ca. 6 mal so lange, wobei ein Pi 2 insgesamt „nur“ ca. eine Stunde braucht.

 

Erst einmal updaten wir die Paketlisten:

sudo apt-get update && sudo apt-get upgrade && sudo rpi-update

Es ist ein Neustart nötig, falls geupdated wurde.

sudo reboot

Anschließend können alle wichtigen Tools und Bibliotheken, die für OpenCV nötig sind, installiert werden (die Installation dauert ein paar Minuten).

sudo apt-get install build-essential git cmake pkg-config libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk2.0-dev libatlas-base-dev gfortran

Hat alles geklappt können wir OpenCV von git klonen. Auch dieser Schritt dauert einige Minuten.

git clone https://github.com/Itseez/opencv.git && cd opencv &&git checkout 3.0.0

Ob Version 3.0 oder 2.4 von OpenCV genommen wird, bleibt dir überlassen. Je nach Anwendung kann eine Version besser geeignet sein.

Anschließend kann OpenCV kompiliert werden. Hierbei kann entweder Python 2.7 oder aber Python 3+ verwendet werden. Es gibt einige Unterschiede zwischen den Versionen, vor allem sind einige Bibliotheken (noch) nicht mit Python 3+ lauffähig. Das betrifft allerdings vor allem kleinere Bibliotheken, da verbreitete Bibliotheken (NumPy, SciPy, etc.) meist für beide Versionen die jeweiligen Dateien zur Verfügung stellen.

In diesem Tutorial verwende ich Python 2.7. Falls du Python bereits installiert hast und feststellen möchtest, welche Version installiert ist, kannst du einfach python in die Konsole eingeben und bekommst ganz am Anfang die genaue Version mitgeteilt (der Befehl für Python 3+ ist python3). Falls du noch kein Python installiert hast, kannst du es mittels folgendem installieren:

sudo apt-get install python2.7-dev

Außerdem brauchen wir das Paket-Management Tool pip, womit wir gleich NumPy installieren:

cd ~ && wget https://bootstrap.pypa.io/get-pip.py && sudo python get-pip.py

Jetzt können wir einfach über pip numpy installieren. NumPy ist eine Bibliothek, mit der man in Python sehr einfach und vor allem schnell Array-Operationen durchführen kann.

pip install numpy

 

Nun aber zum kompilieren von OpenCV. Dazu muss ein build Ordner erstellt werden, worin die kompilierten Dateien landen:

cd ~/opencv && mkdir build && cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE \
 -D CMAKE_INSTALL_PREFIX=/usr/local \
 -D INSTALL_PYTHON_EXAMPLES=ON \
 -D INSTALL_C_EXAMPLES=ON \
 -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
 -D BUILD_EXAMPLES=ON ..

Nun kann endlich kompiliert werden. Dieser Schritt dauert (je nach Raspberry Pi Modell) recht lange (auf meinem Pi 2 ca. eine Stunde). Um auf dem Raspberry Pi 2 alle vier Kerne zum kompilieren zu benutzen, tippen wir folgendes ein:

make -j4

Hat das kompilieren soweit ohne Probleme geklappt, können wir OpenCV installieren lassen:

sudo make install && sudo ldconfig

Geschafft!

Um zu überprüfen, ob alles geklappt hat kannst du die Python Konsole öffnen und die Bibliothek importieren:

Nun kannst du alle OpenCV Funktionen in deinen Projekten verwenden. Ein Blick in die OpenCV Dokumentation ist sicherlich hilfreich.



, , , , , , ,


24 Kommentare

  1. Bernd sagt:

    „Nun aber zum kompilieren von OpenCV. Dazu muss ein build Ordner erstellt werden, worin die kompilierten Dateien landen: “
    fehlt: mkdir /home/pi/opencv
    mfg
    Bernd

    • Felix sagt:

      Wenn du im Homeverzeichnis den git clone Befehl aufrufst, erstellt er dir den opencv Ordner automatisch:

      git clone https://github.com/Itseez/opencv.git && cd opencv && git checkout 3.0.0

      Der Build Ordner muss im bereits vorhandenen opencv Ordner erstellt werden.

  2. Karl sagt:

    Hallo,
    sudo make install && sudo ldconfig
    ergibt die Fehlermeldung:
    make: *** no rule to make target ‚install‘. Schluss.

    Was habe ich übersehen?

    Gruß Karl

    • Felix sagt:

      Hallo Karl,
      kannst du mal versuchen diese Packages zu installieren und es dann nochmal versuchen?

      sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev
  3. kanna sagt:

    Servus,

    beim kompilieren mit „make -j4“ bekomme ich immer eine Fehlermeldung bei 46%.

    Fehlermeldung:

    modules/videoio/CMakeFiles/opencv_videoio.dir/build.make:169: recipe for target 'modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o' failed
    
    make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o] Error 1
    make[2]: *** Waiting for unfinished jobs....
    
    Linking CXX shared library ../../lib/libopencv_video.so
    CMakeFiles/Makefile2:4099: recipe for target 'modules/videoio/CMakeFiles/opencv_videoio.dir/all' failed
    
    make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
    
    make[1]: *** Waiting for unfinished jobs....
    [ 46%] Built target opencv_video
    
    Makefile:133: recipe for target 'all' failed
    make: *** [all] Error 2

    Eine Idee woran das liegen könnte? VG Kanna.

  4. Martin sagt:

    Hallo, ich habe alles so gemacht wie beschrieben, nur beim Improtieren von cv2 ganz am Schluss bekomme ich die Fehlermeldung; No module named cv2

  5. Maroheim sagt:

    Hallo zusammen , weisst jemand wie ich opencv auf raspberry pi 3 installieren kann ?
    bitte um hilfe 🙁
    Danke im voraus

  6. Maroheim sagt:

    Danke Felix , es hat geklappt 🙂

  7. Aki sagt:

    Hallo,

    ich habe einen Raspberry Pi 3 und versuche OpenCV schon zum zweiten mal zu installieren. Beim ersten mal scheiterte es nachdem sudo rpi-update und danach den Raspberry neu gestartet habe. Danach war nur noch ein schwarzer Bildschirm zu sehen und es ging rein gar nichts mehr. Und beim zweiten mal hab ich den Schritt sudo rpi-update weggelassen. Hat alles geklappt bis zum kompillieren da war es bereits bei 80% und jetzt habe ich wieder einen schwarzen Bildschirm vor mir. Oben rechts ist ein farbiges Viereck zusehen das wars.

    Wie kann ich dieses Problem nun lösen?

    Vielen Dank im Vorraus

    • Aki sagt:

      Ich hab jetzt den Raspberry vom Strom genommen und wieder hochgefahren nun funktioniert alles wieder. Es wurde wie gesagt nur bis 80 % kompiliert und nun weiß ich nicht ob ich den Vorgang nochmal durchführen soll.

  8. DFL sagt:

    Hallo,

    ich habe am Raspberry PI 3 opencv -2.4.11 installiert.
    Leider findet der keine Lib, kann mir bitte jemand einen Tipp geben was ich machen kann auser davonlaufen.

    pi@raspberrypi:~/Rundumblick $ make
    Scanning dependencies of target DisplayImage
    [100%] Building CXX object CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o
    /home/pi/Rundumblick/DisplayImage.cpp:11:37: fatal error: opencv2/core/utility.hpp: Datei oder Verzeichnis nicht gefunden
     #include  
                                         ^
    compilation terminated.
    CMakeFiles/DisplayImage.dir/build.make:54: recipe for target 'CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o' failed
    make[2]: *** [CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o] Error 1
    CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/DisplayImage.dir/all' failed
    make[1]: *** [CMakeFiles/DisplayImage.dir/all] Error 2
    Makefile:76: recipe for target 'all' failed
    make: *** [all] Error 2
    pi@raspberrypi:~/Rundumblick $
  9. Sebastian sagt:

    Ich habe dem Tutorial bis zum Kompilierungsschritt gefolgt und wenn ich in diesem Schritt cmake ausführen möchte, kriege ich folgende Fehlermeldung „CMake Error: The source directory „/home/pi“ does not appear to contain CMakeLists.txt

    Was mache ich da falsch bzw wo liegt der Fehler? Versuche es auf einem Raspberry 3

    • Felix sagt:

      Du scheinst im falschen Verzeichnis zu sein (Homeverzeichnis, anstatt dem Ordner, in welchen die Dateien geklont wurden).

    • Sebastian sagt:

      Ich habe versucht mit cd /home/pi/opencv/build in das richtige Verzeichnis zu gehen, trotzdem bleibt dieser Fehler.

      Ich denke auch das ich im richtigen Ordner bin, da ich Terminal folgende Zeile steht: pi@raspberry: /opencv/build $

    • Felix sagt:

      Kannst du dir mal alle Dateien und Ordner in OpenCV Ordner anzeigen lassen (ls)? Der Fehlermeldung zufolge wird im Homeverzeichnis nach der CMakeLists Datei gesucht, diese befindet sich (müsste sich befinden) aber im opencv Verzeichnis.

    • Sebastian sagt:

      Ich habe nun einfach nochmal den Ordner gelöscht und von vorne angefangen. Nun hat er die Datei gefunden

    • Sebastian sagt:

      Nun kriege ich allerdings beim importieren einen Fehlercode das er das Modul nicht finden kann.

      Beim Kompilieren habe ich keine Fehler gesehen und ich benutze die 2.7 Python Version

    • Sebastian sagt:

      Solved, indem ich python-opencv und python-dev noch installiert habe

  10. Mo sagt:

    Moin,
    ich bin bei „import cv2“ und „cv2.__version__“ allerdings kommt bei beiden Befehlen die Meldung: „Bash: import: command not found“.
    Woran koennte das liegen?

    Ich habe ein Raspberry Pi 3 und habe Python 2.7.9

    Vielen Dank im Vorraus

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!