grundschüler schrieb:
> Aufgabenstellung ist die Überwachung eines großen ehemaligen
> Industriegeländes. Mieter und Unbekannte stellen dort gerne Müll,
> Autowracks etc. ab.
>
> Ich hab zunächst dieses hier gekauft:
> [...]
> Problem ist die Software - Zugriff auf augezeichnete Daten. Wenn 5
> Kameras gleichzeitig über mehrere Tage aufgezeichnet haben und irgendwo
> z.B. neuer Müll festgestellt wurde muss der Zugriff auf die
> entsprechenden Bilder relativ schnell möglich sein. Bei dem letzteren
> System -anscheinend neuere Softwareversion - kann man 24h Aufzeichnung
> mit der Maus abfahren und bekommt so eine Art Vorschau angezeigt so dass
> man interessante Stellen halbweg komffortabel finden kann. Das ginge
> aber noch viel besser. Insbesondere ist es lästig, den Übergang zum
> nächsten 24h Zeitraum zu finden. Kennt jemand bessere Systeme bei denen
> das Auffinden von Vorgängen besser möglich ist?
Ja, durch eine automatische Bewegungserkennung natürlich.
> Kann man das Ganze mit c# selbst programmieren bzw. gibt es gute fertige
> Windows oder Linux-Programme?
Mit dem Windows-Umfeld kenne ich mich nicht aus, aber zum Beispiel für
Linux gibt es Motion und ZoneMinder. Die Erfahrungen, die ich mit diesen
Programmen gemacht habe, sind allerdings... durchwachsen: trotz Intel
Celeron CPU mit zwei Cores plus HT und 16 GB RAM war mein kleiner NUC
schon mit einer Logitech C920 in 1280x720 weitgehend ausgelastet.
ZoneMinder war dabei etwas weniger anspruchsvoll als Motion, aber auch
noch ein echter Ressourcenfresser.
Nachdem ich dieses Projekt damals (im Wesentlichen Katzenbeobachtung im
Garten, also nichts Wichtiges) auf Eis gelegt hatte, ist allerdings vor
Kurzem ein Freund an mich herangetreten, der seinerseits vor der Aufgabe
steht, ein installiertes und bereits komplett ausgelastetes
Überwachungssystem eines seiner Kunden zu erweitern. Seine Idee ist ein
Offloading der Bewegungserkennung vom belasteten Zentralserver.
Aus Jux und Dollerei (und natürlich zur Katzenbeobachtung) habe ich
daher nun einen Raspberry Pi 4 mit besagter Logitech C920 bestückt und
ein Python-Skript gebaut, das auf OpenCV basiert und sich um die
Bewegungserkennung kümmert. Die Bilder (und, wenn eine Bewegung erkannt
wurde, ein Marker) werden über Gigabit Ethernet dann auf einen zentralen
Redis-Server übertragen, wo sie von entsprechenden Clients abgerufen und
dargestellt oder gespeichert werden können. Ich habe dabei
wahrscheinlich noch nicht alle Tricks ausgereizt, komme aber jetzt
bereits auf eine Framerate von ca. 19 FPS und kann dabei das Glimmen
einer Zigarette in ca. 35 Metern Entfernung erkennen.
Wohlgemerkt: dabei handelt es sich bislang um nur EINE Kamera, und neben
dem Lesen der Bilder von derselben ist es, wenig verwunderlich, primär
die Übertragung der Bilder über das Netzwerk, das den Flaschenhals
darstellt. Der RasPi hat eine Load von ca. 3,3, nach 19 Tagen Betrieb
lediglich knapp 96 Megabyte RAM belegt und hat mit einem
Kühlrippengehäuse aus Metall eine Temperatur von ca. 60°C, drosselt also
nicht. Mit dem originalen RasPi-Gehäuse, das ich vorher benutzt habe,
lief die CPU in die Drosselung und konnte dann nurmehr etwa 12 bis 13
FPS liefern.
Möglicherweise ließe sich auch mit Tricks wie asyncio, Multiprocessing
mit Shared Memory, mit schnelleren Netzwerkinterfaces (zB. 5 GbE an
USB3), durch die Nutzung der RasPi-Kamera nebst Vorverarbeitung im
schnellen Videocore noch mehr herausholen, aber ich behaupte mal, so
ganz grundsätzlich könnte die Technik vielleicht auch etwas für Deinen
Anwendungsfall sein und vielleicht auch im ungefähren Preisrahmen der
von Dir verlinkten Chinatechnik liegen.
Du siehst: es gibt noch eine Reihe Wenns und Abers, mein Projektlein ist
ja noch in einem recht frühen Stadium. Allerdings finde ich es sehr
beeindruckend, was das Ding jetzt schon schafft und wieviel
Rechenleistung der RasPi4 hat.
Für Deinen Anwendungsfall gäbe es allerdings noch ein paar andere
Kleinigkeiten zu bedenken. Da wären aus meiner Sicht zunächst ein
entsprechend schnelles Netzwerk, außerdem passende (outdoorfähige?)
Gehäuse, und dann gibt es da ja noch das Thema mit der Dauerstabilität
des RasPi selbst und seiner SD-Karte. Nichts, was man nicht mit ein
bisschen gutem Willen, etwas Hirnschmalz und womöglich der Bevorratung
von einigen Ersatzteilen in den Griff bekommen könnte, aber trotzdem
bemerkens- und bedenkenswert. Je nachdem, wie weit Du es treiben willst,
wird Dein Kostenrahmen dabei aber womöglich gesprengt... ;-)
Nebenbei eignet sich natürlich nicht nur ein RasPi für sowas, sondern
auch etliche andere SBCs können benutzt werden. Und natürlich kann man
das auch in C++ oder einer anderen Sprache statt Python machen (wobei
das vermutlich nicht allzuviel nutzen wird). Und gleich werden
sicherlich die hochwichtigen Industrieleute erscheinen und erklären, daß
man sowas nicht mit einem RasPi, sondern natürlich mit Industrieboard
Dings.Bums.Da machen muß, weil das ohnehin das Einzig Wahre (tm) ist und
der RasPi nunmal nicht primär auf Langlebigkeit ausgelegt ist, und weil
man nie weiß, ob die RasPis in drölfzig Jahren noch erhältlich sind, und
so weiter, und so fort. Kennen wir hier alles schon, laß' Dich nicht
entmutigen. ;-)