Software: Auswertung am Livebild mit Web-Anbindung

There are 72 replies in this Thread which has previously been viewed 9,546 times. The latest Post (June 23, 2024 at 1:39 PM) was by jarnold.

  • Hallo zusammen,

    ist gerade als Idee in einem anderen Thread entstanden. Wollte mal etwas Feedback einsammeln:

    Besteht grundsätzlich Interesse an einer Anwendung, die die Auswertung der Treffer auf einer Scheibe in Echtzeit anzeigen könnte? Ich denke da an ein Livebild (Webcam und co) was entsprechend ausgewertet und am Tablett neben dem Schützen angezeigt werden würde. Frage weil ich Softwareentwickler bin und man so ggf zwei Hobbys verbinden könnte. Für mich persönlich wäre noch besonders spannend, die Ergebnisse automatisch in eine Platform zu laden, so dass man seine Scheiben / Ergebnisse online im Browser sich anschauen / vergleichen könnte.

    Das lässt sich ja dann beliebig weiterspinnen - im Portal mit Bestenlisten / Online-Wettbewerben usw.

    Was denkt ihr?

    Viele Grüße

    Alex

  • Also ich fände das fantastisch, weil die von mir bisher favorisierte App hat das bisher seit Ewigkeiten nur als "geplante Premiumfunktion" in Aussicht gestellt und ich vermisse das tatsächlich sehr. Mir wärs auch Geld wert. ;)

    Vielleicht helfen dir ja Infos zu meinem aktuellen Setup:

    • Reolink Webcam, die sind rtsp und rtmp Stream-fähig, bei mir H.264 (H.265 bei aktuellen Modellen)
    • diese streamt via WLAN an einen Raspberry Pi 3 B+ der das Video auf einen alten Monitor via HDMI ausgibt
    • Software ist Rasperry Pi OS mit VLC als Ausgabe

    ...läuft aktuell problemlos und superstabil. Wenn da noch etwas Intelligenz bzw. Treffer-Auswertung möglich wäre, wären mir einiges an Kaffee, Pizza und Bier wert. ;)

  • Also ich fände das fantastisch, weil die von mir bisher favorisierte App hat das bisher seit Ewigkeiten nur als "geplante Premiumfunktion" in Aussicht gestellt und ich vermisse das tatsächlich sehr. Mir wärs auch Geld wert. ;)

    Vielleicht helfen dir ja Infos zu meinem aktuellen Setup:

    • Reolink Webcam, die sind rtsp und rtmp Stream-fähig, bei mir H.264 (H.265 bei aktuellen Modellen)
    • diese streamt via WLAN an einen Raspberry Pi 3 B+ der das Video auf einen alten Monitor via HDMI ausgibt
    • Software ist Rasperry Pi OS mit VLC als Ausgabe

    ...läuft aktuell problemlos und superstabil. Wenn da noch etwas Intelligenz bzw. Treffer-Auswertung möglich wäre, wären mir einiges an Kaffee, Pizza und Bier wert. ;)

    Danke für den Input.

    Ich werde die Software so bauen, dass im Client die RTMP Url angegeben wird. Der Client kann vermutlich auf dem Pi laufen - muss ich aber noch testen.

    Kannst du ein Foto von deinem Cam-Setup posten? Zeigt die Kamera frontal auf die Scheibe? Ohne, dass ich es getestet habe, kann ich mir vorstellen, dass eine seitliche Aufnahme bzgl der Auswertung komplexer ist.

  • Mir schwebte ca. Mai 2023 etwas ähnliches vor, mit Smartphonekamera und "Mehrspielermodus", woraus mangels Programmierkenntnissen aber nie etwas wird. Vorstellbar wären zwei synchronisierte Videofeeds, im Bild die Zielscheiben von Spieler 1 & 2, der Lautsprecher macht Piep und das Mikro übernimmt die Zeitnahme zum Schuss - Genauigkeit und Schnelligkeit ergäbe eine Punktzahl... etc.

    Jedenfalls Daumen hoch für dein Projekt!

    Ich geh ne Runde das Universum verfluchen.

  • Mir schwebte ca. Mai 2023 etwas ähnliches vor, mit Smartphonekamera und "Mehrspielermodus", woraus mangels Programmierkenntnissen aber nie etwas wird. Vorstellbar wären zwei synchronisierte Videofeeds, im Bild die Zielscheiben von Spieler 1 & 2, der Lautsprecher macht Piep und das Mikro übernimmt die Zeitnahme zum Schuss - Genauigkeit und Schnelligkeit ergäbe eine Punktzahl... etc.

    Jedenfalls Daumen hoch für dein Projekt!

    Ich geh ne Runde das Universum verfluchen.

    genau das meinte ich mit dem Online-Wettbewerb!
    Für solche Ideen werden wir Input brauchen. Ich habe Hardware bestellt und werde hier über das Projekt berichten. Habe schon etwas ähnliches (allerdings ohne Bildauswertung) für SimRacing gemacht. Das hatte auch viel Spass gemacht - funktioniert aber nur mit dem Zuspruch der Community. Da fließt schon recht viel Arbeit + Zeit in so ein Projekt.

  • Habe angefangen, den Algorithmus für die Treffererkennung zu schreiben.

    Aktueller Stand, ist dass die Erkennung an einem Foto zuverlässig funktioniert.

    Der nächste Schritt wird sein, die Logik auf das Livebild der Cam anzuwenden.

    Habe kurz mit der automatischen Auswertung der Punkte rumgespielt, das klappte nicht zuverlässig genug auf Anhieb.

    Die gedachten Schritte sind:

    - Anzeige der Treffer auf dem Livebild implementieren

    - Aufsetzen der Platform mit den Anzeigen und Benutzern

    - Anzeige der aktuellen Shooting-Session pro Benutzer

    Danach steht die Basis und ich würde mit der Auswertung der Treffer-Punkte weiter machen.

    Hier ein Foto vom aktuellen Stand - wie die Erkennung funktioniert.

  • Was in der Theorie bei dem letzten Bild funktioniert, hat sich heute in der Praxis als deutlich schwieriger erwiesen.

    Das Bild oben, was ich für die initiale Entwicklung verwendet habe, ist mit dem Handy gemacht.

    Habe zum Testen eine Tapo C200 (20 €) gekauft und in den Kugelfang gestellt. Dort war nun schon mehr Aufwand notwendig, um brauchbare Ergebnisse zu bekommen. Die Bildqualität der Kamera ist so lala, die Linse hat nicht genügend Zoom.

    Die Treffererkennung funktioniert trozdem - allerdings bedarf es hier etwas Setup, um den Algorithmus an die jeweiligen Gegebenheiten anzupassen. Kann man sich so vorstellen, dass man wie im Beispiel unten auf die Scheibe schießt und mit ein paar Kontrast / Helligkeit / Empfindlichkeitsregler hin und her schiebt, bis die Treffer korrekt markiert werden. Danach speichert man die Einstellungen und kann sie hoffentlich so wiederverwenden.

    Bei solchen günstigen Kameras wird die Trefferzoneerkennung nicht vollständig automatisch funktionieren. Was mir vorschwebt, ist dass als Teil vom initialen Setup, die Markierung der Kreise stattfindet. Dh analog zu den Reglern aus dem oberen Schritt, zeichnet man die Kreise über das Kamerabild und definiert damit die Trefferzonen.

    Das Bild, was später am PC / Browser angezeigt wird, kann sowohl die tatsächliche Kameraaufnahme mit den Treffern als auch eine grafische Darstellung der Scheibe und der Treffer in "schön" als künstliches Bild daneben sein.

  • Wie wäre es mit einer roten oder grünen Hintergrundbeleuchtung der Scheibe ?

    Sollte natürlich recht hell sein.

    Der Kluge macht so viel wie möglich richtig, der Weise so wenig wie möglich falsch.

  • Wie wäre es mit einer roten oder grünen Hintergrundbeleuchtung der Scheibe ?

    Sollte natürlich recht hell sein.

    Das würde die Erkennung erleichtern - wobei es auch so funktioniert, das größere Problem ist eher aber die Abgrenzung der einzelnen Zonen aus dem Winkel. Ich würde wollen, das ganze mit so wenig Hardware, wie möglich aufbauen zu können.

    Am besten nur eine Cam + Raspberry mit einem Docker Container. Dh eine ganz simple Installation. Sonst wird es schwer mit der Akzeptanz - und ohne Nutzer ist es nur halb so gut

  • Am besten nur eine Cam + Raspberry mit einem Docker Container. Dh eine ganz simple Installation. Sonst wird es schwer mit der Akzeptanz - und ohne Nutzer ist es nur halb so gut

    Wobei die größte Herausforderung ja das flashen des Images auf die SD Karte ist. Ob da intern ein Python Script, irgendein Docker oder was ganz anderes werkelt merkt der normale Nutzer ja nicht. Falls man keine pre-built images bereit stellen will/kann wäre vermutlich ein Yocto Recipe das einfachste um lokal zu bauen. Und auch da wäre es für den Anwender relativ egal wenn alle Dependencies sauber sind.

    Nebenbei, wie hast du die Treffererkennung realisiert? In den letzten paar Tagen hast du ja sicher keinen eigenen Algorithmus implementiert sondern eher ein Framework a la OpenCV benutzt, oder?

  • Ja klar, das ganze setzt auf opencv und ffmpeg auf. Die eigentliche Anwendung ist in Java

    Das Image Thema wird erst am Ende relevant. Für die eigentliche Anwendung wird man auch einen Updatemechanismus brauchen.

  • Das Image Thema wird erst am Ende relevant. Für die eigentliche Anwendung wird man auch einen Updatemechanismus brauchen.

    Wozu? Das System selbst sollte ja nur auf lokale Requests reagieren, das kann man per iptables recht simpel lösen. Damit ist Sicherheit kein echtes Problem, es wird ja niemand auf seinem Schießstand online banking machen ;)

    Und Feature Updates kann man ja auch lokal nachrreichen. Zumal man sonst noch irgendeinen Repo Server betreiben müsste. (oder lokal was selbst basteln das z.b von Github Kram auscheckt und baut).

    Java? Krass, hätte jetzt eher auf Python getippt. Dachte das stirbt langsam aus...

  • Wieso sollte Java aussterben?

    Updates braucht man, wenn es Änderungen am Client gibt, zb bugfixes. Dann will man nicht alle Nutzer bitten eine neue Version zu ziehen. Das muss automatisch gehen

  • Was passiert denn, wenn ein 2 Treffer ins gleiche Loch geht oder das erste Loch nur unwesentlich vergrößert? Irgendwie müsste die Software die Anzahl der Schüsse erfassen, evtl. über den Sound vom Einschlag .

  • Wieso sollte Java aussterben?

    Updates braucht man, wenn es Änderungen am Client gibt, zb bugfixes. Dann will man nicht alle Nutzer bitten eine neue Version zu ziehen. Das muss automatisch gehen

    Weil Java einfach unsicher ist und schon immer war.

    Zum Thema Treffrrerkennung. Wie wird ein Loch in Loch Schuss erkannt?

  • Was passiert denn, wenn ein 2 Treffer ins gleiche Loch geht oder das erste Loch nur unwesentlich vergrößert? Irgendwie müsste die Software die Anzahl der Schüsse erfassen, evtl. über den Sound vom Einschlag .

    Zwei Schüsse in das gleiche Loch komplett ohne Änderung der Umrisse würden erstmal nicht erkannt werden.

    Man könnte die Anzahl der Schüsse mit einem Mikrofon zählen - dann ist aber trotzdem unbekannt, ob die Scheibe komplett verfehlt wurde oder Lohn in Loch getroffen wurde.

    Ggf könnte man auf das spezifische Geräusch vom Kugelfang hören - ist aber eher was für Ausbaustufe 2

    Wieso sollte Java aussterben?

    Updates braucht man, wenn es Änderungen am Client gibt, zb bugfixes. Dann will man nicht alle Nutzer bitten eine neue Version zu ziehen. Das muss automatisch gehen

    Weil Java einfach unsicher ist und schon immer war.

    Das ist Quatsch. Eine Programmiersprache kann nicht unsicher sein, es kommt drauf an, was man damit macht. Durch die JVM hast du sogar eher weniger Sorgen, was das Speichermanagement angeht.

    Egal ob C++ / python / Java / .net - alle Hochsprachen sind gleich sicher / unsicher. Es kommt auf die Anwendung und die verwendeten Frameworks an.

    Edited once, last by filth (November 30, 2023 at 7:56 AM).

  • Zwei Schüsse in das gleiche Loch komplett ohne Änderung der Umrisse würden erstmal nicht erkannt werden.

    Man könnte die Anzahl der Schüsse mit einem Mikrofon zählen - dann ist aber trotzdem unbekannt, ob die Scheibe komplett verfehlt wurde oder Lohn in Loch getroffen wurde.

    Ggf könnte man auf das spezifische Geräusch vom Kugelfang hören - ist aber eher was für Ausbaustufe 2

    Ist die Frage ob das andere Software kann. Vielleicht mal bei Backhohle anfragen was passiert wenn ein Schütze in das gleiche Loch trifft? B.z.w. daneben geschossen hat. Ich vermute mal diese Software kann das auch nicht. Wie soll sie das erkennen? Das geht in meinen Augen nicht.

    Aber die normale Funktion würde schon enorm die Auswertung erleichtern. Wenn jemand betrügen will findet er immer einen Weg. Nicht beirren lassen. Ich finde das toll dass du dich für so etwas einsetzt. :thumbup:

    PS komme auch aus der IT aber nicht in Sachen Programmierung.

  • Das ist kein Quatsch. Das ist der Grund warum Java ausirbt.

    https://www.heise.de/download/blog/…st-Java-3632920

    Und nur darum ging meine Antwort.

    Inwieweit Dir das zuträglich ist für Dein Vorhaben, wollte ich nicht anzweifeln.


    Und wenn nicht Loch in Loch erkannt wird, dann hat das keinen Sinnin meinen Augen. Da gibt es Apps die den Job bisher ausreichend gut machen.

  • Der Artikel ist 6 Jahre alt und wirft JS und Java in einen Topf. Dann geht es noch um irgendwelche Browser-Anwendungen, die tatsächlich ausgestorben sind. Wir reden hier über Java im Serverumfeld. Egal, ich sehe wohin das führt und gehe auf den Rest Deiner Ausführungen nicht ein :)

    Natürlich gibt es weitere Apps, da kann jeder sich das passende aussuchen und benutzen

    Ja - fast ausgestorben ;)

    https://www.statista.com/statistics/793…used-languages/