Friday 22 September 2017

Moving Average Opencv


Im noch Hacking zusammen ein Buch Scannen Skript, und fürs Erste, alles was ich brauche ist in der Lage sein, automatisch zu erkennen, eine Seite zu drehen. Das Buch füllt 90 des Schirmes (Im using eine cruddy Webcam für die Bewegungsabfragung), also, wenn ich eine Seite drehe, ist die Bewegungsrichtung grundsätzlich in der gleichen Richtung. Ich habe ein Motion-Tracking-Skript, aber Derivate sind immer mich nirgendwo: Es erkennt die durchschnittliche Bewegung der durchschnittlichen Mitte aller Boxen, die extrem ineffizient ist. Wie würde ich über Erkennung solcher Bewegungen schnell und genau (d. H. Innerhalb einer Schwelle) Im mit Python zu gehen, und ich beabsichtige, mit ihm zu bleiben, wie mein ganzes Framework auf Python basiert. Und Hilfe wird geschätzt, so vielen Dank im Voraus. Cheers. Motion Erkennung mit OpenCV Einführung und Ziel Ich wollte schon immer eine Software auf der Grundlage der Webcam, die Bewegung erkennen und aufnehmen können in einer Videodatei nur etwas bewegt. Es ist jetzt getan. ) In der Tat ist es nicht wirklich denkbar, alles aufzuzeichnen, weil die Festplatte schnell gefüllt werden würde, wenn die Software zum Beispiel einen Tag laufen muss. Weil ich OpenCV liebe und du zu Mangel an dieser Art von Software auf Linux habe ich beschlossen, es zu tun. Wie gesagt, vor dem Programm analysieren die Bilder von der Webcam aufgenommen und Absicht Bewegung zu erkennen. Wenn eine Bewegung erkannt wird, beginnt das Programm die Aufnahme der Webcam in einer Videodatei für 10 Sekunden. Anschließend wird, wenn eine Bewegung wieder erkannt wird, sie noch aufnehmen, bis die Bewegungen aufhören. Dieses Projekt wird auf meinem Github gehostet. Die triviale Art und Weise habe ich implementieren zwei verschiedene Algorithmen zu erkennen, Bewegung der erste ist die trivialsten in seiner Art zu verhalten. Die triviale Idee ist, die Differenz zwischen zwei Rahmen zu berechnen gelten eine Schwelle die separate Pixel, die von den anderen geändert haben und dann zählen alle schwarzen Pixel. Dann wird der Durchschnitt mit dieser Zählung und der Gesamtzahl der Pixel berechnet und abhängig von der Decke, die das Ereignis ausgelöst wird oder nicht. InitRecorder: Initialisieren Sie den Recorder mit einem beliebigen Codec kann es mit Problemen in der Lauf-Methode keine Bewegung kann in den ersten 5 Sekunden erkannt werden, weil es fast die Zeit, die für die Webcam, um den Fokus und die Leuchtkraft, die Lotrsquos Änderungen am Bild ProcessImage: enthält alle Bilder, die auf das Bild angewendet werden etwasHasMoved: Die Bilditeration, um schwarze Pixel zu zählen ist in dieser Methode enthalten Das Ergebnis: Die intelligente Art und Weise nennen wir es die intelligente Art und Weise, weil seine Art zu bedienen ist weniger trivial Als die vorherige, aber die Ergebnisse sind identisch, wenn nicht genauer in der vorherigen Methode. Ich inspirierte mich von der Motion-Tracker von Matt Williamson für die Operationen und Filter auf das Bild gelten, aber der Rest ist anders. Die Idee bei dieser Methode ist es, die Konturen der bewegten Objekte zu finden und die Fläche aller zu berechnen. Dann wird der Mittelwert der Oberflächenänderung mit der Gesamtfläche des Bildes verglichen und der Alarm ausgelöst, wenn er den vorgegebenen Grenzwert überschreitet. Beachten Sie, dass der unten aufgeführte Code das Aufnahmesystem nicht implementiert, wie es bei dem vorherigen Beispiel der Fall ist, aber es kann einfach gemacht werden. Robin David Aktuelle Beiträge GitHub Repos KategorienHi, wird dies ein sehr einfacher Artikel, aber Sie werden es sehr hilfreich finden. Es geht um Hintergrund-Extraktion aus einem Video. Angenommen, Sie sind Video von Footage von Verkehr gegeben, kann eine Sache wie diese sein. Verkehr in Indien. Und Sie werden gebeten, einen ungefähren Hintergrund zu finden. Oder so etwas. Hintergrund-Extraktion kommt wichtig in der Objektverfolgung. Wenn Sie bereits ein Bild von der nackten Hintergrund, dann ist es einfach. Aber in vielen Fällen haben Sie nicht ein solches Bild und so, müssen Sie eine zu erstellen. Das ist, wo Running Average kommt praktisch. (Ich dachte darüber nach, wenn ein Mann eine Frage in SOF gefragt hat.) Die Funktion, die wir hier verwenden, um Running Average zu finden, ist cv2.accumulateWeighted (). Wenn wir z. B. ein Video anschauen, halten wir jedes Einzelbild an diese Funktion weiter, und die Funktion hält die Mittelwerte aller Frames, die ihr nach der folgenden Beziehung zugeführt werden, fest: src ist nichts anderes als unser Quellbild. Es kann Graustufen - oder Farbbild und entweder 8-Bit - oder 32-Bit-Gleitkomma sein. Dst ist das Ausgabe - oder Akkumulatorbild mit denselben Kanälen wie das Quellbild und es ist entweder ein 32-Bit - oder ein 64-Bit-Gleitkomma. Außerdem sollten wir es zuerst auf einen Wert deklarieren, der als Anfangswert genommen wird. Alpha ist das Gewicht des eingegebenen Bildes. Laut Docs regelt alpha die Aktualisierungsgeschwindigkeit (wie schnell der Akkumulator 8220forgets8221 um frühere Bilder handelt). In einfachen Worten, wenn Alpha ein höherer Wert ist, versucht das durchschnittliche Bild auch sehr schnelle und kurze Änderungen in den Daten zu erfassen. Wenn es niedriger Wert ist, wird der Durchschnitt träge und es wird nicht betrachten schnelle Änderungen in den Eingabebildern. Ich werde es ein wenig mit Hilfe von Bildern am Ende des Artikels erklären. In oben Code habe ich zwei Mittelwerte gesetzt, eine mit höheren Alpha-Wert und eine andere mit niedrigeren Alpha-Wert, so können Sie verstehen, Wirkung von Alpha. Zuerst werden beide auf den Anfangsrahmen des Captures gesetzt. Und in Schleife erhalten sie aktualisiert. Sie können einige Resultate in der SOF Verbindung sehen, die ich bereits zur Verfügung stellte. (Ich habe die Ergebnisse hier, können Sie den Code und Alpha-Wert dort): Ich habe meine Webcam und gespeichert Original-Frame und laufenden Durchschnitt zu einem bestimmten Zeitpunkt. Dieses ist ein Rahmen von einem typischen Verkehrsvideo, das von einer stationären Kamera genommen wird. Wie Sie sehen können, geht ein Auto auf die Straße, und die Person versucht, die Straße zu einem bestimmten Zeitpunkt zu überqueren. Aber sehen Sie den laufenden Durchschnitt zu diesem Zeitpunkt. Es gibt keine Person und Auto in diesem Bild (Eigentlich ist es da, haben einen engen Blick, dann werden Sie es sehen, und die Person ist klarer als Auto, da Auto bewegt sich sehr schnell und über das Bild, es hat nicht viel Wirkung auf den Durchschnitt, aber Person ist es für eine lange Zeit, da er langsam und bewegt sich über die Straße.) Nun müssen wir sehen, die Wirkung von Alpha auf diese Bilder.

No comments:

Post a Comment