mikrocontroller.net

Forum: PC-Programmierung Plot in Webcam Bild einbinden


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Marcus W. (Firma: keine) (wmarcus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

ich hab auf dem Dach ne Webcam, die alle 10 Sekunden ein jpg im Netz 
speichert. Zusätzlich befindet sich dort eine Wetterstation, die alle 
paar Sekunden per 433 Mhz und mqtt Brücke - Luftfeuchtigkeit,Temperatur, 
Windstärke, Böen und Windrichtung und Niederschlagsmenge ins Netz 
speist. Diese Daten werden zusätzlich auf einer mysql Datenbank 
abgelegt.

Jede Nacht wird mit ffmpeg aus den Bilder ein Video generiert.

Ich würde nun gerne die "live" Wetterdaten als fortlaufenden Plot in die 
Webcam Bilder einbetten, allerdings weiß ich nicht so wirklich mit 
welchen "tools" ich das einigermaßen elegant gebaut bekomme. Evtl hat 
hier ja jemand nen heißen Tipp...

1. Wie ich die Daten aus der mysql Datenbank in einen Plot bekomme 
(alternativ direkt aus "mqtt") und möglichst ohne, dass das noch durch 
viele Pipe geschoben werden muss.

2. Wie ich die Plots? Ehmmm... Graphen! ... Vor dem Nachtlauf oder 
direkt während dessen, mit Match auf das Erstellungsdatum/Uhrzeit der 
Bilder, in die Bilder prügeln kann.

Cheers,
Marcus

Autor: Marten Morten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt diverse Linux Tools zur automatischen (batch) Bildbearbeitung.

> ohne, dass das noch durch viele Pipe geschoben werden muss.

Das ist aber genau das Prinzip wenn man es mit Linux auf die altmodische 
Tour machen würde. Es ist ein bisschen eine Fleißarbeit.

Der Ablauf den man skripten könnte wäre grob:

SQL-Query um die Daten für einen Zeitpunkt aus der Datenbank in einem 
ASCII-Format zu bekommen. Zum Beispiel als CSV.

Dann gnuplot, plotutils, etc. (bis hin zu Octave und anderen Programmen) 
um eine Grafik (ein Bild) aus den Daten zu erzeugen.

Dann kommt der große Moment von netpbm 
http://netpbm.sourceforge.net/doc/directory.html:

Ausgabe (oder Konvertierung) der Grafik im PAM, PPM, oder PNM 
netpbm-Format.

Wenn nötig Skalierung und andere Bearbeitungen (z.B. Rahmen hinzufügen) 
des Grafik PNM-Bildes mit entsprechenden Werkzeuge aus netpbm.

Umwandlung des JPEG-Bildes in ein PNM-Bild (mit jpegtopnm).

Kombinieren des Grafik-PNM mit dem Bild-PNM mit pnmpaste.

Das Ergebnis-PNM aus pnmpaste müsste sich direkt statt des 
ursprünglichen JPEGs in ffmpeg einlesen lassen. Denn zumindest so weit 
ich mich erinnere unterstützt ffmpeg die netpbm-Formate.

Autor: Marcus W. (Firma: keine) (wmarcus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da bekomm ich direkt Spiralen in den Augen...
Fleißarbeit ist in dem Zusammenhang tatsächlich angesagt... Das ist 
sicherlich auch ein Projekt, an dem noch der ein oder andere Tag 
vergehen wird.

Vor dem ausbügeln der Feinheiten graut es mir schon jetzt...



Meine Vorstellung wäre aber in etwa so:

Ein Script prüft regelmäßig, ob ein neues Bild vorliegt und triggert 
dann die Erstellung der Graphen. Ein dynamisches Query holt sich jeweils 
die Daten vom beginn des aktuelle Tages bis zum jetzigen Zeitpunkt und 
legt den resultierenden Plot als Bild irgendwo ab. Vermutlich wäre es 
sinnvoll, die Dateinamen mit einer Art ID zu versehen, um das 
nachfolgende zusammenführen zu vereinfachen... Mglw. könnte man auch mit 
einer Art Arbeitsverzeichnis leben.... das ist wahrscheinlich einfacher 
und überschaubarer.

Wenn ich dich richtig verstehe, dann kann ich die Bilder mit netpbm 
zusammenführen... Skalieren wird in der Tat auch notwendig sein. Die 
Webcam spuckt in ihrem derzeitigen Ausbau nur 800x600 (oder sowas in der 
Größenordnung) aus. D.h. um einen Graphen mit sinnvoller Auflösung 
darstellen zu können muss der ganze Quatsch vorher auch noch aufgeblasen 
werden. Die erzeugten PNMs kann ich dann (vermutlich) wie gewohnt durch 
ffmpeg jagen...

klingt nach einem Plan.

Autor: Frank E. (Firma: Q3) (qualidat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht ist es sinnvoll, in jedes Einzelbild, gleich nachdem es die 
Webcam irgendwo in einen Hotfolder abgelegt hat, die aktuellen 
Wetterdaten reinzumalen. Das dürfte sogar mit PHP zu machen sein.

Dann ändert sich an dem bisherigen Verfahren zur Videoerstellung Nichts.

Man kann die Bilder per Cronjob ja auch direkt aus der Kamera lutschen, 
dann müssen die garnicht erst als File abgelegt werden ...

Letzte Idee: Kennt ffmpeg einen "Append-Mode"? D.h. jedes Bild, sobald 
es fertig bemalt und fornatiert vorliegt gleich an ein (somit stetig 
wachsendes) Video anhängen. Dann passt die gesamte Video-Erstellung 
jeweils in einen Cronjob-Run.

: Bearbeitet durch User
Autor: Weingut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab sowas mit m RasPi gemacht, Bild aus der Cam ziehen, mit Image Magick 
Firmenlogo, aktuelle Temp und Zeitstempel rein gepinselt, Bild hochladen 
auf Webspace und täglich mit ffmpeg n Video erstellt und hoch laden. 
Crontab, shellscript und bisschen Python, fertig ist der Lack

Autor: imonbln (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube ich würde mit numpy die Daten aufbereiten, vielleicht erstmal 
in einen jupyter notebook, bis ich eine mir gefällige Darstellung der 
Wetterdaten habe, dann aus den Jupyter notebook, ein kleines Python 
Programm entwickeln und die Daten ins Bild einbetten, danach kannst du 
deine vorhandene Pipeline mit ffmpeg nutzen um das Video zu erstellen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.