Seite 1 von 1

Peoplecounter Statistik abfragen

Verfasst: Dienstag 17. Februar 2009, 16:15
von bake
Moin moin,

hier ein kleines, spezielles, aber simples Skript um die von einer Netzwerkkamera mit integriertem Besucherzähler bereitgestellte Statistik abzufragen oder zu reseten.

Da man den Code vermutlich noch optimieren kann, immer her mit euren Vorschlägen.

Der plain-text, der per HTTP-GET abgeholt werden kann sieht folgendermaßen aus:

Code: Alles auswählen

in_yesterday[cams]=0; out_yesterday[cams]=0; in_today[cams]=1; out_today[cams]=1; camera_name[cams]='axis_studio1'; cams=cams+1;
Nun aber der Code:

Code: Alles auswählen

import urllib2
import base64


class PeopleCounter:

    def __init__(self):
        self.url = 'http://0.0.0.0/local/tvpcWebGui/'
        self.username = 'username'
        self.password = 'password'
        
        self.encodedlogin = base64.encodestring(self.username + ':' + self.password)[:-1]

    def openurl(self, url):
        request = urllib2.Request(url)
        request.add_header('Authorization', 'Basic ' + self.encodedlogin)
        return urllib2.urlopen(request)

    def getstatus(self, filename='sum.js'):
        data = self.openurl(self.url + filename).read().split(';')
        in_today = data[2].split('=')[-1]
        out_today = data[3].split('=')[-1]
        return (in_today, out_today)
         
    def resetstatus(self, filename='rmcnt.cgi'):
        self.openurl(self.url + filename).read()
Über Anregungen, Verbesserungsvorschläge und dergleichen freue ich mich. Vielen Dank im Vorraus! :)

Edit: Code aktualisiert

Verfasst: Dienstag 17. Februar 2009, 22:30
von Dauerbaustelle
Wie gut funktioniert denn der Besucherzähler und anhand welcher Merkmale erkennt er Besucher? Sorry, dass ich offtopic werde :)

Verfasst: Mittwoch 18. Februar 2009, 00:03
von bake
Kein Problem :)

Soweit ich das bis jetzt testen konnte funktioniert der Zähler recht zuverlässig. Auch mehrere Personen die nebeneinander den überwachten Bereich durchschreiten werden erkannt. Bin glaube ich ca. 50 mal durch den Messbereich gelaufen und er hat ein oder zwei Durchgänge nicht erkannt. Der Zähler ist aber auch nocht nicht zu hundert Prozent eingerichtet. Ein paar Feineinstellungen müssen anscheinend noch gemacht werden.

Bei dem Zähler handelt es sich um eine modifizierte Netzwerkkamera.
Wenn jetzt jemand den überwachten Bereich durchschreitet und zwei der drei Linien durchschreitet (Anfang und Mitte zum Beispiel), dann erhöht sich die Zählung um 1.
Ich vermute, dass die aufgenommenen Bilder auf eine Veränderung analysiert werden (Farbveränderung von mehreren Pixeln). Aber wie der Prozess genau aussieht, weiß ich nicht.
Sobald ich etwas Zeit habe, werde ich mich mal genauer informieren, ist nämlich eine Interessante Frage.

Edit: Habe gerade die Produktbeschreibung auf der Herstellerhomepage angeschaut, dort geben sie eine Genaugkeit von 95-99% an.

Unter http://face.cognimatics.com/peopleCounter.avi kann man ein Demovideo ansehen, eigentlich sind es drei Messlinien, eine am oberen Bildrand und noch eine am unteren. Daran erkennt die Kamera auch die Richtung, in der sich die Personen bewegen.

Verfasst: Mittwoch 18. Februar 2009, 13:11
von DatenMetzgerX

Code: Alles auswählen

in_today = data[2][data[2].find('=')+1:]
out_today = data[3][data[3].find('=')+1:]
kann hier nicht die split Methode verwendet werden? z.B.

Code: Alles auswählen

in_today = data[2].split('=')[-1]
Somit würde im in_today der Wert hinter dem Gleich stehen. Wäre erheblich lesbarer.

Verfasst: Donnerstag 19. Februar 2009, 14:04
von bake
Stimmt, funktioniert ebenso, ist leichter zu lesen und wirkt eleganter. Danke! :)