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:
1 2 |
import cv2 cv2.__version__ |
Nun kannst du alle OpenCV Funktionen in deinen Projekten verwenden. Ein Blick in die OpenCV Dokumentation ist sicherlich hilfreich.
37 Kommentare
„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
Wenn du im Homeverzeichnis den git clone Befehl aufrufst, erstellt er dir den opencv Ordner automatisch:
Der Build Ordner muss im bereits vorhandenen opencv Ordner erstellt werden.
Hallo,
sudo make install && sudo ldconfig
ergibt die Fehlermeldung:
make: *** no rule to make target ‚install‘. Schluss.
Was habe ich übersehen?
Gruß Karl
Hallo Karl,
kannst du mal versuchen diese Packages zu installieren und es dann nochmal versuchen?
Servus,
beim kompilieren mit „make -j4“ bekomme ich immer eine Fehlermeldung bei 46%.
Fehlermeldung:
Eine Idee woran das liegen könnte? VG Kanna.
Hallo, ich habe alles so gemacht wie beschrieben, nur beim Improtieren von cv2 ganz am Schluss bekomme ich die Fehlermeldung; No module named cv2
Hat das Kompilieren geklappt (komplett und ohne Fehler)? Welche Python Version nutzt du?
Hi,
ich habe dasselbe Problem. Gibt es da schon eine Lösung?
Hallo zusammen , weisst jemand wie ich opencv auf raspberry pi 3 installieren kann ?
bitte um hilfe 🙁
Danke im voraus
Lass mal den Parameter
-j4
weg und versuch ein normalesmake
sudo apt-get install python-opencv
Danke Felix , es hat geklappt 🙂
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
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.
Für alle, die das selbe Problem haben…
Der Raspberry PI 3 läuft bei der Compilierung heiß. Um dem vorzubeugen empfehle ich ein normales make (anstatt make j4), dann wird nur mit einem Core compiliert und der Prozessor wird nicht so heiß.
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.
Ich habe es jetzt zum laufen gebracht.
Mit dieser Anleitung habe ich opencv am PI 2 ohne Probleme installiert:
https://docs.google.com/document/d/1wmcaBUogffbxD78IghNyag4jl2gAZp1d_9HLkBGriLA/edit
Aber am PI 3 wurden ein paar *.hpp nicht installiert.
Am PI 3 musst ich wie in diesem Tutorial beschrieben per github installiert.
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
Du scheinst im falschen Verzeichnis zu sein (Homeverzeichnis, anstatt dem Ordner, in welchen die Dateien geklont wurden).
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 $
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.Ich habe nun einfach nochmal den Ordner gelöscht und von vorne angefangen. Nun hat er die Datei gefunden
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
Solved, indem ich python-opencv und python-dev noch installiert habe
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
Wo gibst du es ein? Sieht so aus, als ob du es aus der Bash nutzen willst, ohne vorher die Python Konsole geöffnet zu haben (
sudo python
).Oh stimmt. Vielen herzlichen Dank 😀
sudo apt install python-numpy
sudo apt install python-opencv
FTFY
Hallo, nach diesem Schritt:
Erhalte ich folgende Fehlermeldung:
Die folgenden Pakete haben unerfüllte Abhängikeiten:
libtiff5-dev : hängt ab von : libjpeg-dev
E: Probleme können nicht korrigiert werden, ………
Hat jemand eine Idee wie ich das fixen kann.?? Danke
Hallo mir geht es wie STEFAN….
Die folgenden Pakete haben unerfüllte Abhängikeiten:
libtiff5-dev : hängt ab von : libjpeg-dev
Das gleiche Problem wie bei Stefan und Stefan2 auf einem Raspberry Pi 3.
Wenn ich die libjpeg-dev im im install-Command ergaenze, kommt noch mehr Gemecker:
# Die folgenden Pakete haben unerfüllte Abhängigkeiten:
# libjpeg-dev : Hängt ab von: libjpeg62-turbo-dev (>= 1:1.3.1-12) soll aber nicht installiert werden
# Kollidiert mit: libjpeg8-dev aber 8d1-2 soll installiert werden
# E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete.
Wie lautet das derzeit korrekte Kommando? Oder wo finde ich die entsprechende Dokumentation?
@Stefan @Stefan2 and Ralph:
Try to have a look at this page, seems to be more complicated, but perhaps it will work. I will give it a try…
http://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/
Guten morgen,
auf einem Raspberry 3 bekomme ich den Befehl
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_EXAMPLESON ..
nicht zum Laufen. Es heist in der Datei CMakeError das der Compiler C++11 nicht unterstützt wird.
Was mache ich falsch?
hallo,
bei mir kommt bei make -j4 die Fehlermeldung:
In file included from /home/pi/opencv/modules/hal/include/opencv2/hal/defs.h:329:0,
from /home/pi/opencv/modules/core/include/opencv2/core/cvdef.h:59,
from /home/pi/opencv/modules/core/include/opencv2/core.hpp:52,
from /home/pi/opencv/modules/core/include/opencv2/core/utility.hpp:52,
from /home/pi/opencv/build/modules/core/precomp.hpp:49:
/usr/include/c++/6/cmath:45:23: fatal error: math.h: No such file or directory
#include_next
^
compilation terminated.
In file included from /home/pi/opencv/modules/hal/include/opencv2/hal/defs.h:329:0,
from /home/pi/opencv/modules/core/include/opencv2/core/cvdef.h:59,
from /home/pi/opencv/modules/core/include/opencv2/core.hpp:52,
from /home/pi/opencv/modules/imgcodecs/include/opencv2/imgcodecs.hpp:46,
from /home/pi/opencv/build/modules/imgcodecs/precomp.hpp:45:
/usr/include/c++/6/cmath:45:23: fatal error: math.h: No such file or directory
#include_next
^
compilation terminated.
modules/core/CMakeFiles/pch_Generate_opencv_core.dir/build.make:62: recipe for target ‚modules/core/precomp.hpp.gch/opencv_core_RELEASE.gch‘ failed
make[2]: *** [modules/core/precomp.hpp.gch/opencv_core_RELEASE.gch] Error 1
CMakeFiles/Makefile2:1505: recipe for target ‚modules/core/CMakeFiles/pch_Generate_opencv_core.dir/all‘ failed
make[1]: *** [modules/core/CMakeFiles/pch_Generate_opencv_core.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs….
modules/imgcodecs/CMakeFiles/pch_Generate_opencv_imgcodecs.dir/build.make:62: recipe for target ‚modules/imgcodecs/precomp.hpp.gch/opencv_imgcodecs_RELEASE.gch‘ failed
make[2]: *** [modules/imgcodecs/precomp.hpp.gch/opencv_imgcodecs_RELEASE.gch] Error 1
CMakeFiles/Makefile2:3595: recipe for target ‚modules/imgcodecs/CMakeFiles/pch_Generate_opencv_imgcodecs.dir/all‘ failed
make[1]: *** [modules/imgcodecs/CMakeFiles/pch_Generate_opencv_imgcodecs.dir/all] Error 2
[ 25%] Built target pch_Generate_opencv_videoio
[ 25%] Built target pch_Generate_opencv_imgproc
Makefile:149: recipe for target ‚all‘ failed
make: *** [all] Error 2
Wie kann ich dieses Problem lösen?
Hallo Alex,
ich habe den gleichen Fehler. Hast du inzwischen eine Lösung gefunden?
Dieser verdammte Linux Bums ist echt zum kotzen. Hat wirklich jemals Jemand etwas auf anhieb installiert bekommen? lächerlich!
Kompilieren mit cmake geht einfach nicht
Auf dem aktuellen Raspbian musste ich die Lib auf „libtiff5-dev“ ändern:
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