Raspberry Video Camera

Raspberry Video Camera – Teil 20: Exkurs – Farbdarstellung per 2D-Histogramm

Farbhistogramme helfen bei der Beurteilung, welche Farben wie häufig in einem Bild vertreten sind. Vereinfacht ausgedrückt zumindest. Eindimensionale Histogramme haben wir bei der Farbkalibrierung des Python-Kamera-Triggerprogramms bereits verwendet. Für die drei HSV-Farbkanäle Hue, Saturation und Value, hatten wir zu diesem Zweck drei Histogramme generiert und daraus die Grenzen der Eichhörnchenfarben abgelesen. Nun stelle ich das 2D-Histogramm vor, mit dem wir zwei Kanäle gleichzeitig berechnen und visualisieren können – typischerweise Hue und Saturation. (mehr …)

Raspberry Video Camera – Teil 19: SW Kombinationstrigger

Das automatische Auslösen der Raspberry Video Camera bleibt weiterhin das Thema. In den vorangegangenen Artikeln hatte ich die Kamerasteuerung per Bewegungssensor vorgestellt und dann die Farberkennung aus dem Videobild heraus. Beides sind brauchbare Trigger, wenn es darum geht, ein Objekt vor der Kamera zu erkennen, aber sie haben auch ihre spezifischen Nachteile. Wie wäre es nun, wenn wir die beiden Methoden kombinieren, von den jeweiligen Vorteilen profitieren, Nachteile ausgleichen und so die Objekterkennung noch treffsicherer machen? In diesem Artikel kombiniere ich die Farbauswertung mit den Signalen des PIR-Bewegungssensors. (mehr …)

Raspberry Video Camera – Teil 18: SW Farbkalibrierung

Die Raspberry Video Camera soll genau dann ein Video aufzeichnen, wenn ein Eichhörnchen ins Bild kommt. Und das soll ein Python-Programm anhand der typischen Farben der Eichhörnchen erkennen. Das Münchner Oachkatzl ist entweder rotbraun, wie der Kamerad hier im Titelbild, oder dunkelbraun. Beide haben weißes Brust- und Bauchfell. Darauf muss das Programm, das den Videodatenstrom analysiert, natürlich eingehen und ständig das Videobild auf die Eichhörnchenfarben hin untersuchen. Wie das softwaretechnisch funktioniert, haben wir im entsprechenden Python-Programm bereits gesehen. Aber woher bekommen wir die Zahlen für die Farbwerte? Genau diese Frage wird in diesem Artikel beantwortet. (mehr …)

Raspberry Video Camera – Teil 17: Exkurs – Wie Computer Farben sehen

Im vorangegangenen Artikel hatte ich gezeigt, wie wir die Raspberry Video Camera durch Farberkennung auslösen können. Dabei analysiert ein Python-Programm die Videobilder auf die typischen Farben der Eichhörnchen hin und generiert dann das Triggersignal. Um die Bildauswertung zu bewerkstelligen, bedienen wir uns einer spezialisierten Software für das maschinelle Sehen. Die nennt sich Computer Vision und in ihrer freien Form OpenCV. Heute möchte ich ein wenig näher darauf eingehen, wie OpenCV Bildimages intern als Zahlen darstellt und was es mit den verschiedenen Farbräumen wie RGB oder HSV auf sich hat.  (mehr …)

Raspberry Video Camera – Teil 16: SW Trigger per Farberkennung

Wie lässt sich der Auslöser der Videokamera durch eine Objekterkennung im Videobild selbst steuern? Das ist die Fragestellung um die es in diesem Artikel geht. In den beiden vorhergegangenen hatten wir bereits Vorarbeiten geleistet. Wir hatten OpenCV als Python Programmbibliothek installiert und das Video-Aufzeichnungsprogramm so erweitert, dass es jede Sekunde ein Bild aus dem aktuellen Videodatenstrom entnimmt und ins Dateisystem legt. Nun können wir diese Bilder einlesen und auf die Fellfarben der typischen deutschen Eichhörnchen hin analysieren. Bei positiver Erkennung soll eine Triggerdatei erzeugt werden – genauso, wie es vorher durch den Bewegungssensor geschehen ist. (mehr …)

Raspberry Video Camera – Teil 15: SW Einzelbilder exportieren für die Farberkennung

Die bisher entwickelte Version der Oachkatzl-Cam verwendet einen Bewegungssensor als Auslöser für die Videoaufzeichnung. Das geht aber auch anders, wie ich in Teil 4 dieser Artikelserie bereits beschrieben hatte. Als nächstes realisiere ich eine Objekterkennung anhand der Farbe der Eichhörnchen. Das ist ein recht umfangreiches Thema und ein größeres Python-Programm. Da braucht es mehrere Artikel um dem gerecht zu werden. Im letzten Artikel hatten wir bereits OpenCV auf dem Raspberry Pi installiert, damit steht das programmiertechnische Rüstzeug bereits zur Verfügung. Heute zeige ich, wie wir aus dem Videodatenstrom einzelne Bilder exportieren können, die dann im nächsten Artikel nach den typischen Eichhörnchenfarben untersucht werden.  (mehr …)

Raspberry Video Camera – Teil 14: SW Installation Computer Vision (OpenCV 3.2)

Eine automatische Videokamera per Bewegungssensor zu triggern ist nur eine von vielen Möglichkeiten. Man kann auch die Bilder der Kamera auswerten und versuchen darin Bewegungen oder Objekte zu erkennen. Eine extra Hardware, wie ein Bewegungssensor, ist dann nicht mehr nötig, allerdings schlaue Software, die bei der Bildauswertung behilflich ist. Computer Vision heißt das Zauberwort, das man mit maschinellem Sehen übersetzen könnte. Und das gibt es auch für den Raspberry Pi und für Python. OpenCV 3.2 wird in diesem Artikel installiert – quasi als Vorarbeit, damit wir dann in den nächsten Artikel Objekterkennung in Python betreiben können. Dann wird die Kamera durch die Farben der Eichhörnchen getriggert. (mehr …)

Raspberry Video Camera – Teil 13: SW Autostart und Überwachung

In den vorangegangenen Artikeln habe ich die Software für die Raspberry Video Camera vorgestellt. Das war jeweils ein Python-Programm für die Raspberry Kamera an sich und für den PIR Bewegungssensor. Nun geht es darum, die Programme automatisch beim Bootvorgang zu starten und dafür Sorge zu tragen, dass das System verlässlich läuft. Dabei muss man es mit der Überwachung nicht übertreiben. Ein nächtlicher Reboot und ein Programm, das das Volllaufen der SD-Karte verhindert, reichen bereits vollkommen aus. Letzteres kann mit ein paar Zeilen Python-Code und einem Eintrag in die Crontab leicht erledigt werden. (mehr …)

Raspberry Video Camera – Teil 12: SW Trigger per Bewegungssensor

Die Hardware ist fertig, die Kamerasoftware auch – jetzt fehlt nur noch der Auslöser – ein automatischer versteht sich. Dafür gibt es viele Möglichkeiten, wie Bewegungserkennung, Bildauswertung oder eine Lichtschranke, einige werde ich später noch eingehender vorstellen. Den Anfang macht eine einfach zu realisierende Variante eines Kamera-Triggers, nämlich ein PIR-Bewegungssensor. Der soll die Bewegung eines Eichhörnchens erkennen, die Info an den Raspberry Pi weiterleiten und dort wird ein kleines Python-Programm die Schnittstelle zum Kameraprogramm ansteuern. Der Nachlauf der Kamera, also die Zeit, die die Kamera noch aufzeichnet nachdem keine Bewegung mehr erkannt wird, wird in dieser Variante auch vom Bewegungssensor gesteuert. Die Nachlaufzeit lässt sich dort mit einem Potentiometer einstellen. (mehr …)

Raspberry Video Camera – Teil 11: SW Python für die Kamera

Nachdem Raspbian Lite auf dem Pi installiert ist, geht es nun an die Programmierung. Raspberry-typisch erfolgt die in Python, eine Sprache, die ich mir auch erst mühsam anlesen musste. Aber inzwischen – ohne behaupten zu wollen, in die Tiefe vorgedrungen zu sein – muss ich sagen, dass mich die Schönheit und die Mächtigkeit von Python begeistert. Ich schicke voraus, dass ich versuchen werde Python3-Syntax zu verwenden. Python 2.7 tue ich mir nicht mehr an und teste die Programme ausschließlich unter Python 3. Was aber niemand abhalten soll, meinen Code auf Python 2.7 umzuschreiben. Angefangen wird heute mit der Programmierung der Raspberry Pi Kamera – unter Verwendung des Picamera-Python-Moduls. (mehr …)