Diskussionsthread: optischer Sensor (Wiki) (Neu: mit Programmcode)

Begonnen von Rince, 03 August 2015, 14:09:05

Vorheriges Thema - Nächstes Thema

Rince

Sodala.

Mein Problem ist jetzt, dass ich das Programm nicht trainieren kann um ihm die passende Schriftart beizubringen. Mir fehlen ja ganz viele Zahlen :)
Ein kurzer Test mit einer auf Handschrift getrimmten Testdatei ging jedenfalls voll in die Hose.

Also brauche ich den Namen der Schriftart, mit der diese Zeichen erzeugt worden sind :)
Die Zähler stammen wohl von der Firma Lorenz. Habe dort mal angerufen und nach dem Schriftnamen gefragt, leider ist der Kollege grade nicht da. Habe gebeten, mir das per eMail zukommen zu lassen.

Dann kann ich Trainingsbilder erstellen :)

Ach ja, wo ich denke mir Inspiration holen zu können, ist da:
http://stackoverflow.com/questions/9413216/simple-digit-recognition-ocr-in-opencv-python
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

@bytejunky,
Für den Fall, dass ich die Schriftart nicht bekomme, wärst du so freundlich einige Liter Wasser zu opfern?

Ich brauche die Zahlen 0-9 als Bild.
Und wenn die nur von der letzten Anzeigerolle sind, ist völlig ok.
Nur bitte drauf achten, dass die Zahlen ganz drauf sind, also etwa in der Mitte :)

Versuche, mehrere Bilder von jeder Zahl zu machen, jeweils die Camera etwas anders positioniert. Also von leicht schräg links/rechts, etwas oben/unten, etwas von beidem :)

Auflösung von 640x480 reicht völlig, wenn die letzte Zahl halbwegs groß im Bild zu sehen ist

Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

Ergänzung:
Bitte auch drauf achten, dass keine Licht-Reflektionen auf den Zahlen sind.
Und mich interessiert, wann die vorletzte Zahl sich um 1 Zähler weiter dreht.

Ich hab da evtl. eine Billig-Lösung im Kopf, die für diesen Anwendungsfall aber gut gehen könnte:

Eigentlich würde es völlig reichen, lediglich die Shapes von den Zahlen zu erhalten. Außen sehen sie alle immer anders aus.
Und es sind nur 10 Zahlen, um die es geht.

Wenn wir annehmen, dass sie immer an der gleichen Stelle auftauchen (ja, da haben wir wieder den Punkt mit den Masken ;) ), wir brauchen 7 oder 8 Stück davon, dann könnte es völlig ausreichen, jeweils das Shape mit den 10 in Frage kommenden zu vergleichen.

D.h. (vereinfacht):
0. Mustermasken erstellen
1. Bild wird mit deinen Masken zerlegt (für jede Zahl auf dem Rädchen 1 Maske...)
2. Wir bilden die Masken von dem Inhalt
3. Wir verwenden nur die größte Maske (evtl. hilft uns das, wenn die Zahl am wegdrehen ist)
4. Wir testen die größte Maske gegen die 10 in Frage kommenden
5. Wir verwenden die Zahl, deren Wahrscheinlichkeit am größten ist.
6. Wir nehmen uns die nächste Maske vor...
7. Wenn wir alle 7 (oder 8) durch haben, schicken wir ca. 9 Readings an fhem:
Ermittelte Zahl
Wahrscheinlichkeit für erste, zweite, .... letzte Ziffer

Das könnte reichen :)

Einen Punkt haben wir noch, wir müssen dafür Sorge tragen, dass die Musterbilder und die später kommenden Bilder ziemlich genau die gleiche Größe haben. Will sagen:
Die Masken müssen geich groß sein sonst wird das in die Hose gehen.

Ich kann mal versuchen, das mit Arial Narrow (fett) zu probieren, das sieht nicht unähnlich aus.

Würde aber viele Bilder von dir vorziehen :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

bytejunky

Ich setzte mich heute abend nach der Arbeit dran und lasse Wasser laufen :)

Rince

Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

bytejunky

Ich habe die letzten Tage verschiedene Kameras und Befestigungsmöglichkeiten derselbigen getestet.
Leider ohne Erfolg, mit meiner Konstellation finde ich keine praktikable Lösung um ein halbwegs akzeptables Bild von meinen Wasserzählern zu generieren.

Die Cam müßte mitten im Flur meiner Wohnung stehen, oder im Schrank mit einem riesen Loch in der Rückwand und bei jedem öffnen der Türen ist die Position verrutscht, usw.
Ganz zu schweigen von der Beleuchtung, das ist ein Problem für sich.
Eine Idee wäre vielleicht noch jeweils eine Kamera mit Macro Linse und eigener Beleuchtung, oder sowas in der Art.

Alles in allem, wenn ich dann den Aufwand und die Kosten sehe, dann kommen wohl eher folgende Projekte in Frage:
http://forum.fhem.de/index.php?topic=18038.0
http://www.fastforward.ag
http://volkszaehler.org

Ein großes Dankeschön gilt aber Rince für seine Bemühungen.

Rince

Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Hauswart

1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

zentis666

Zitat von: Rince am 06 August 2015, 21:04:16
Hm, ich glaube nicht.
Ich hab für meine Gesichtserkennung für fhem das Python Skript durch nen Compiler gejagt. Da kamen glaube ich satte 30MB raus, bis es unabhängig war.

Hallo Rince,
bin gerade über den Thread gestolpert, ich würde gerne eine Gesichtserkennung a la Netatmo Welcome mit ein paar vorhandenen IP Kameras realisieren. Bei mir läuft fhem auf einem i3 NUC unter Debian, auf dem würde ich auch OpenCV installieren.
Könntest Du grob beschreiben wie Du das gemacht hast?
Gruß
Sven
--
FHEM auf Debian VM - ESXi 6.0 Intel Nuc i5 4th Gen, Homematic auf HMCCU - RaspberryMatic auf Raspberry PI 3,
EM1000 & FS20 über CUNO,  IT über Arduino Firmata, MiLight über WLAN-nRF Gateway, Ebus, 1Wire, diverse Squeezeboxen, Dreambox 920UHD, Homebridge

Rince

Oh, sorry. nicht gesehen.
Bitte schreibt mir ne PN wenn ich nicht reagiere :)

Die Installation hatte ich im Wiki beschrieben. Hat das nicht funktioniert? Link steht im 1. Post.


Für den Compiler um ne Windows EXE zu bekommen, muss ich nachsehen.

Ich will das Skript auf MQTT umstellen, dann sehe ich mir das gerne wieder an :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Thyraz

#40
Wollte mich auch mal für diesen Thread bedanken.
Hab damit endlich die Auswertung meiner Fußbodenheizung hinbekommen.

Bisher hab ich schon länger mit mir gerungen, ob ich mir Homematik als weiteres Funksystem dafür anbinden soll (nutze bisher hauptsächlich ZWave) und dann den Aufwand/ die Kosten einer solchen Installation auf mich nehmen will:
http://tips-und-mehr.de/projekt-warmwasser-fussbodenheizung-heizkreisverteiler-schaltzustaende-der-stelltriebe-mit-homematic-visualisieren/

Dank OpenCV konnte ich das nun mit einer gebrauchten IP-Webcam von Ebay Kleinanzeigen für 20€ erledigen, ohne einen Elektriker mit ins Boot holen zu müssen. :)

Mein Glück hierbei war, dass wir einen Klemmkasten mit LEDs im Fußbodenverteiler haben, dessen LEDs ich auswerten kann.
Dadurch kann ich jetzt sehr gut visualisieren wie lange die einzelnen Heizkreise geöffnet oder geschlossen sind.
Mithilfe dieser Anzeige kann man Dinge wie benötigte Vorlauftemperatur oder Pumpenabschaltung nach Außentemperatur einfach optimieren,
da man sieht ob die Heizung am Anschlag ist (Ventile praktisch Dauerhaft offen, oder fast immer zu).

Dann kann die Heizsaison nun kommen. ;)


Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...