Farberkennung in Bildern am Raspberry Pi mittels OpenCV

Um bestimmte Bereiche in Bildern zu erkennen, kann es hilfreich sein, diese per Farben zu selektieren. Ein Raspberry Pi ist für solch eine Farberkennung wunderbar geeignet, da er einerseits eine einfache Kameraschnittstelle hat und dazu sehr schnell per Python programiert werden kann.

OpenCV ist dafür eine großartige Bibliothek für alle möglichen Teile der Computer Vision (CV). Es bietet eine Reihe von einfachen Tools, die wir auf dem Raspberry Pi dank Python-Bibliothek nutzen können.

Übrigens: Auch dieses Tutorial ist aufgrund einer der vielen Raspberry Pi Tutorial-Wünsche entstanden.

Zubehör

Dieses Tutorial ist weitestgehend Software-basierend. Daher funktioniert es auch auf anderen Systemen mit Python – nicht nur auf dem Raspberry Pi. Da wir uns aber auf den Pi konzentrieren, empfehle ich ein Modell mit etwas mehr Leistung (mindestens Model 3B). Zusätzlich ist eine Webcam, oder auch die offizielle Raspberry Pi Kamera ideal:

 

Vorbereitung und Installation von OpenCV

Falls du ein echtes Bild der Kamera analysieren willst, so kannst du dies entweder auf Knopfdruck machen, oder aber per Software.

In jedem Fall brauchen wir aber OpenCV für Python. Falls du es bereits vorher installiert hast, kannst du einfach zum nächsten Punkt springen. Falls nicht, öffne deine Konsole und gib folgendes ein:

sudo apt-get update
sudo apt-get install python3-dev python3-opencv --yes

Um es zu prüfen kannst du nun python3 eingeben und anschließend:

Dies sollte die aktuelle OpenCV Version ohne Fehlermeldung ausgeben. Mit exit()beendest du die Python-Konsole.

 

Skript zur Farberkennung am Raspberry Pi

Um die Farberkennung gut testen zu können, ist es wichtig, dass wir ein entsprechend farbiges Bild haben. Hierfür kannst du ein beliebiges Bild nehmen, oder eben z.B. das Titelbild dieses Artikels. Dieses kannst du folgendermaßen herunterladen:

wget https://tutorials-raspberrypi.de/wp-content/uploads/opencv_color.jpg

Nun werden wir das Skript erstellen, mit dem wir die Farberkennung starten:

sudo nano opencv_color_detection.py

 

Führen wir das Skript also direkt aus und schauen, was passiert:

python3 opencv_color_detection.py

Du wirst folgende zwei Bilder zu sehen bekommen:

Übrigens: In dem obigen Code ist auch ein alternativer Teil eingebaut, falls du das Bild der Raspberry Pi Kamera nutzen willst. Du kannst z.B. auch auf Knopfdruck ein Bild aufnehmen und die Farberkennung dann auf diesem neuen Bild laufen lassen.

 

Erklärung des Codes

Die angebenen Farben befinden sich im BGR-Farbraum. Dieser ist äquivalent zum RGB Farbraum, jedoch sind die Positionen der Rot- und Grünwerte vertauscht.

Es ist unwahrscheinlich, dass ein Objekt immer genau eine Farbe hat. Daher nimmt man auch kleine Abweichungen in Kauf. Das ist der Grund, weshalb wir hier einen Farbbereich (von .. bis ..) angeben und alle Farben, die dazwischen liegen, z.B. zu der Farbe „rot“ zuordnen. In unserem konkreten Beispiel bedeutet das:

Alle Farben, die einen Blau-Wert zwischen 0 und 60, sowie einen Grün-Wert zwischen 0 und 60 und einen Rot-Wert von 128 bis 255 haben, werden zur Farbe „Rot“ zugeordnet. Gleiches gilt für die definierte Farbe Gelb.

Wir bilden also eine Maske auf das Bild, in der wir nur jene Pixel in diesem Farbbereich selektieren. Anschließend werden alle anderen Farben ausgeblendet (Schwarzer Bereich).

Es ist natürlich genauso möglich, mehrere Masken übereinander zu legen und z.B. alle roten und gelben Bereiche zusammen zu selektieren.

7 Kommentare

  1. Dieser Befehl funktioniert bei mir nicht. „sudo apt-get install python3-dev python3-opencv –yes“ Es gibt nur die Fehlermeldung „Packet python3-opencv kann nicht gefunden werden“. Auch andere Schreibweisen von OpenCV werden nicht erkannt

    Antworten
  2. Vielen Danke für die Anleitung, hat ohne Probleme geklappt.

    hätte noch eine kurze Frage ist es möglich aus einem Livestream die Fraben zu erkennen?
    Wenn ja wie sieht der grobe Programmaufbau aus?

    Antworten
    • Hallo zusammen,

      bin neu hier. Ich lese nun einige Zeit diese Tutorials von Felix und möchte mich erstmal recht herzlich bei Felix bedanken. Speziell hat dieses Tutorial mein Projekt
      Farberkennung erheblich weitergebracht.
      MfG

      Xaver

      Antworten
  3. Hallo Ich habe alles so wie du gemacht jedoch, wenn ich das Python Script ausführe, passiert gar nichts

    Den alternativ Teil habe ich weggelassen den Pfad zum Bild habe ich auch angepasst Jedoch erscheint kein Bild so wie bei dir was mach ich falsch

    Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Blog abonnieren

Abonniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!