python webcam detector program – let's create a motion detector using opencv in python – Lesson 41

Just another WordPress site

python webcam detector program – let's create a motion detector using opencv in python – Lesson 41

Willkommen zu dieser neuen Vorlesung natürlich und das ist etwas ganz Besonderes, dem ich zufällig begegnet bin vor der Kamera sein, weil in dieser Vorlesung Was Sie erstellen werden, ist ein Programm das erkennt sich bewegende Objekte in vor einer Computer-Webcam und dann was es zeichnet es eine Zeit auf, die die Objekt in die Webcam eingegeben, so dass die Videorahmen und die Zeit, zu der die Objekt hat den Videorahmen verlassen, also jetzt ein sehr glattes Objekt im Rahmen und wenn ich Geh weg, du siehst, dass es keinen Kuni gibt Rechteck jetzt im Video und jetzt ich wieder auftauchen wieder ausziehen und so weiter Also werden wir diese Anwendung erstellen von Grund auf mit Python und ja wir habe viel zu lernen wie Bildverarbeitung und Videoverarbeitung als gut und so weiter und zuletzt, was wir dann tun, wenn Sie drücken Q für das Beenden, was Sie erhalten, ist ein Diagramm und Wie gesagt, die Grafik zeigt die Spielzeuge wo das Objekt so in den Rahmen eingetreten ist Wir haben es mit einem interaktiven Diagramm zu tun hier und ja das sind die Spielzeuge wo Das Objekt wurde wie folgt in die Webcam eingegeben eine mindestens eine hier und hier hat sie verloren es länger und so was das sein kann ein großartige Anwendung, wenn Sie erkennen möchten Objekte, die Sie durchgemacht haben, können Sie setzen Anwendung dieses Python-Programms in einem Himbeerkuchen-Server zum Beispiel welche ist ein kleiner Server und Sie können es setzen irgendwo und vielleicht erkennen wollen Tiere, die Sie vielleicht wissen möchten, wenn dies Tier betritt den Rahmen und wo es ist aufregend oder auch mit Menschen, wenn es gibt den Fall also ja das ist ein Programm und ich hoffe es gefällt euch wir haben Es gibt ziemlich viel Code zu schreiben, also lasst uns Fangen Sie an und ich werde mit Ihnen in der sprechen nächste Vorlesung hey hier organisieren wir und in In dieser Vorlesung bauen wir weiter eine reales Bewegungserkennungsprogramm jetzt bevor ich nach rechts gehe Unser erster erklärt Ihnen gerne die Architektur des Problems, dass die Gebäude so, wie dieses Programm in der Lage ist Bewegung im Video erkennen und ich nehme an Sie wissen bereits, wie man das baut Skript, also haben wir dies im vorherigen erstellt Vorträge und gut unser Drehbuch ist dass für den Fall, dass Sie es verpasst haben, in Ordnung Dies löst also das aus Video, wie Sie es vom Computer aus gesehen haben Webcam, also verarbeiten wir hier Frames in dieser while-Schleife und so weiter, damit Sie wissen das werde ich nicht richtig durchgehen Was wir als nächstes tun müssen, sind wir müssen die Frames verarbeiten, die sind wird in dieser Wandschleife iteriert und Ich habe hier ein paar Bilder zu illustriere meine Ideen meine Konzepte lassen mich gehe in das Verzeichnis, in dem sie sich befinden befindet sich also was diese Bewegungserkennung Programm wird tun, es wird die auslösen Webcam genau wie unser aktuelles Skript und eine Bedingung für das Programm zu gut funktioniert ist, dass sobald Sie die auslösen Webcam das erste Bild eines Teils der Video sollte ein statischer Hintergrund sein, also wenn Sie dies verwenden möchten Programm Nehmen wir an, Sie richten eine Webcam ein auf einem Laptop oder als sehr PI Server lassen Sie uns Angenommen, Sie möchten die Bewegung aus erkennen eines bestimmten Tieres in einem Gebiet so Zuerst möchten Sie erfassen-bis Auslösen der Kamera während der Hintergrund ist statisch und dann möchten Sie um diesen Hintergrund als Basisbild zu verwenden damit Sie die anderen Bilder vergleichen können und dann kann Python erkennen, ob es eine gibt Wechsel zwischen dem ersten Frame des nächste Frames, das ist eine Sache, die Sie brauchen zu tun und so ist dies ein Beispiel für die gemahlen und dann etwas das Tier erscheint auf Ihrer Kamera in Ordnung und dann was Sie in Ihrem Skript schreiben müssen in das Programm ist zuerst wir möchten dieses Bild so grau machen das Hintergrundbild und ein aktuelles Bild der Kamera, so dass Sie die erste speichern Rahmen der Videoaufnahme in einer Variablen dann konvertierst du diesen Frame in einen Graustufenbild und dann die Wandschleife geht durch die aktuellen Frames und Sie machen dasselbe für die aktuellen Frames dass Sie sie in Graustufen konvertieren

und was machst du dann mit diesen beiden Graustufenbilder des Stroms Iteration der Schleife, die Sie werdenIch wende die Unterschied zwischen ihnen, so ist dies die Unterschied ein Beispiel für einen Unterschied Frame über Delta-Frame, wenn Sie sagen können so, wenn dieses bestimmte Bild Sie werden feststellen, dass hinter mir steht die Lampe des Raumes normalerweise nicht in der Lage sein, das Lamm zu sehen, aber Python ist tatsächlich den Unterschied machen zwischen der Rahmen, in dem ich am erschien der Hintergrundrahmen, in dem sich die Runde befindet sichtbar, so dass es mit diesem Grau kommt Bild, in dem jedes Pixel ein bestimmtes hat Wert, so dass es einige Intensitätswerte hat in Ordnung, das heißt zum Beispiel die die hohen Intensitätswerte wie diese Eine, wo ich bin, bedeutet, dass es gibt mögliche Bewegung in diesem Bereich hier während die schwarzen Bereiche beschäftigen dort keine Bewegung, aber Sie sehen auch etwas hellschwarz Pixel hier, weil wir wissen, wann ich erscheint vor der Kamera, da ist Schatten dahinter ich und so weiter, aber wir werden liefern etwas anderes später, das heißt die Schwelle also sagen wir im Grunde das, wenn Sie einen Unterschied in der sehen Rahmentiefe in dem Rahmen, den ich gerade habe zeigte Ihnen, wenn Sie einen Unterschied von sehen mehr als 100 oder Intensität konvertieren das Pixel diese Pixel zu weißen Pixeln wieder und für Pixel, die unter dem liegen Schwelle konvertiere sie in schwarz okay also Sie kommen mit dem Umriss der Objekt, das sich bewegt Kamera im Bild, also machen wir all das Prozesse innerhalb der while-Schleife und dann sobald wir den Schwellenwert berechnet haben Rahmen innerhalb der Schleife, was wir tun werden Der aktuelle Frame findet die Konturen der weißen Objekte in der Rahmen okay, also für dieses bestimmte Bild wir hätten Konturen um diese Objekt hier und die Konturen um dieses und um dieses ist Loch und ich werde laden eine vollständige Schleife, die durchlaufen wird alle Konturen eines aktuellen Rahmens gehe noch einmal in diese Ecke, um zuzuhören zu diesem und dann innerhalb dieser Schleife Was wir tun werden, wird überprüft, ob die Bereich der Konturen so dies zum Beispiel hat ein a von sagen wir 500 Pixel also wenn die Fläche, wenn die Fläche der Kontur ist dann mehr als 500 Pixel zum Beispiel Betrachten Sie dies als ein sich bewegendes bewegliches Objekt wenn es gibt, sagen wir weniger als 500 wie Dieser hier ist wahrscheinlich 20 Pixel Nehmen wir an, dies wird nicht als betrachtet bewegliches Objekt okay ich hoffe das macht Sinn und dann werden wir als nächstes tun Wir werden ein Rechteck um die zeichnen Konturen, die größer sind als die Mindestfläche und ich werde diese zeigen Rechtecke im Originalbild also in die Farbversion des aktuellen Rahmens das heißt, wir sehen ein Rechteck in das Video während das Video abgespielt wird wir sieht ein Rechteck um das Objekt und später werden wir die Zeiten erkennen, die das Objekt, in das das sich bewegende Objekt eingetreten war den Hintergrund des Videobildes zu einer Zeit dass das Objekt den Hintergrund verlassen hat aber jetzt konzentrieren wir uns einfach auf Erkennen des Objekts das sich bewegende Objekt im Video okay und gehen wir zurück zu das Skript so dies dies und das in Ordnung Mal sehen, einige unnötige Zeilen entfernen hier haben wir also die Variable hier welche wir haben geschaffen, weil wir sehen wollten wie viele Frames hatten wir im Video also lassen wir das nicht mehr und wir Das Skript muss nicht für drei angehalten werden Sekunden, also entferne ich die Zeit, die verrutscht und dieser auch okay und jetzt hier Der erste Teil ist der schwierigste wir müssen einen Weg finden, um die zu speichern aktuelles Bild des Videos so schnell wie Video startet wir wollen das speichern Nicht-Pay-Array in Variable und haben das Variable statisch, damit wir nicht wollen Ändern Sie den Wert der Variablen während Die while-Schleife wird im Skript ausgeführt und Der Weg, dies zu tun, ist, dass wir zuerst müssen eine Variable für den Rahmen für erstellen das erste Bild, also müssen wir es zuweisen ein Nicht-Wert, also ist keiner etwas Besonderes Python-Datentyp, mit dem Sie Erstellen Sie eine Variable und weisen Sie nichts zu es aber du hast die Variable dort also wenn Sie rufen diese Variable später auf. Python wird nicht sagen, dass die Variable nicht in Ordnung definiert ist, wenn du verstehst es nicht bitte warte

und du bekommst es in einer Weile und was Sie müssen jetzt ein schreiben bedingt und wenden Sie eine Fortsetzung an Aussage dort lassen Sie mich die schreiben zuerst bedingt und dann erkläre ich Ihnen, was dies tut, wollen wir Überprüfen Sie, ob der erste Frame keiner ist und ob es ist keine, die wir in der ersten zuweisen werden Rahmen Sie den grauen Rahmen so ein, wie dies funktioniert ist, dass der Scrip, den Sie auf dem Video sind wird ausgelöst, dass die Wandschleife beginnt zu laufen und es wird die erste bekommen Frame Video und es wird es in diesem speichern Rahmenvariable und diese Rahmenvariable wird in einen grauen Rahmen umgewandelt und dann sagen wir, wenn der erste Frame keiner ist das ist wahr in der ersten Iteration von die Schleife dies ist wahr, so der erste Frame ist eigentlich keine, weil wir nicht zugewiesen haben hier ein Zeichen das graue non poi su das erste Bewerten Sie so den ersten Frame, den Sie erhalten Graustufenbild, das ein sehr darstellt erstes Bild des Videos, damit dies passiert in der allerersten Iteration der Schleife okay, aber was dann passieren wird, ist Python führt diese anderen Codezeilen aus und dann geht es zur zweiten Schleife und was Python tun wird, ist, dass es greift das zweite Bild des Videos okay, sagen wir mal Die erste Rahmenmappe war ein Hintergrund Bild und dann plötzlich ein Objekt erscheint in der Kamera vor dem Kamera, damit Python das nicht pi greift Array, das dieses Objekt enthält, also das zweiter Frame und dieser Frame wird sein in grau umgewandelt und hier sagen wir wenn Der erste Frame ist nur der erste frei Variable erhält den ersten Frame von Video und sobald wir das erste gepackt haben Frame wollen wir nicht diesen anderen Verlust von Code ausgeführt werden, weil hier werden wir Haben Sie wissen, wird die Differenz anwenden zwischen Frames und wir werden die verschwimmen Frames und so weiter, damit wir diese nicht wollen stattdessen soll Python ausgeführt werden gehe zum Anfang der Schleife und Fahren Sie mit dem zweiten zu erledigenden Frame fort dass wir hier so weitermachen müssen Dies bedeutet, dass Sie bis zum Anfang von fortfahren Schleife und gehe nicht um den Rest von Der Code ist in Ordnung, der erste Frame ist bekannt, dass der erste Frame einen Wert erhält oder der Das erste Bild des Videos geht dann zu die nächste Iteration und dann die nächste Iteration, was wir tun werden, werden wir greifen das zweite Bild eines Videos und dann es berechnet die graue Version davon Rahmen und dann geht es wieder zum bedingt und in diesem Fall ist die erster Frame Mama nein, es liegt nicht daran, dass die Der erste Frame hat den Wert des Graus Bild in der ersten Iteration des while-Schleife, so dass diese Zeilen hier nicht bei der zweiten Iteration von ausgeführt werden die Schleife okay toll das heißt, wir können jetzt den Tod von anwenden Regen, damit wir die Differenz berechnen können zwischen dem ersten Frame und dem aktuellen Bild des Bildes, so dass das erste Bild ist die erste Rahmenvariable und die aktuelle Rahmen ist eine graue Variable, aber davor wir möchten etwas mit dem machen aktueller Rahmen des Bildes, das wir wollen Erwachsener hier also der Grund, warum wir wollen Gaußsche Unschärfe anwenden ist, dass wir wollen verwischen Sie das Bild, das wir machen möchten verschwommen, um es zu glätten, weil das Entfernt Rauschen und erhöht die Genauigkeit in die Berechnung einer Differenz so dies bekommt ein Spirometer das Bild, das Sie wollen Unschärfe und dann passieren wir das Grau Bild hier und Wiederherstellung der Unschärfe Version des Bildes in einem grauen Bild immer wieder haben wir einen anderen Parameter was als Tupel kommt und hier brauchen wir um die Breite und Höhe des zu übergeben Gaußscher Kernel also im Grunde genommen die Parameter der Unschärfe aber 21 würde Nummern akzeptiert und Sie auch brauche einen neuartigen verlorenen Parameter, damit wäre die Standardabweichung und bestanden Null Null wird hier auch häufig verwendet, wenn Wenn Sie mehr über sie erfahren möchten, können Sie gehen durch die Dokumentation aber diese Werte wären gut, also machen wir die graues Bild hier und hier unten verschwommen Jetzt müssen wir den ersten Frame vergleichen des Bildes so der Hintergrund mit einem

aktueller Frame nennen wir dasDatenrahmen und das wäre gleich C v2 Punktapse Unterschied also absoluter Unterschied zwischen dem ersten Bild habe ich einen Strom Rahmen, der großartig ist, beachten Sie, dass der erste Rahmen wird auch das Grau ein Grau sein Version eine verschwommene graue Version tatsächlich also vergleichen wir hier, um es zu verwischen Graustufenbilder Okay, was uns das geben wird, ist eine andere Bild nochmal und eigentlich möchte ich Zeigen Sie das Bild hier auf dem Bildschirm CV zu Bildshow Delta Frame Mal sehen was wir werden hier rauskommen und bevor wir rennen das Skript werde ich aus der Ansicht verschwinden zuerst und dann wieder erscheinen lassen uns siehe okay, nichts ist passiert, weil ich habe vergessen, den Namen des Fensters einzugeben Nennen wir diesen Desktop-Frame und lassen Sie uns Sag einen tollen Rahmen dafür, lass mich jetzt rennen und hier bin ich so ist dies ein begrabener Graustufenversion haben sie hier gesät und wir Habe den Unterschied in Ordnung, damit du sehen kannst die Lampe hinter mir im Delta-Rahmen Drücken Sie die Q-Taste und erstellen Sie die Video jetzt, wenn Sie, wenn ich drucken möchte nur um die Tiefe des Rahmens zu überprüfen wird es uns ermöglichen, den Unterschied zu sehen zwischen Intensitäten oder den entsprechenden Pixel also sehen und wenn ich das jetzt beende los geht’s Was wir hier haben, bedeutet also, dass es gibt Kein Unterschied, also gibt es in diesem Bereich keine Bewegung wahrscheinlich, aber dann haben Sie 174 das ist ziemlich breit, das heißt Python wird dies als Bewegung in Ordnung qualifizieren, die wird nur um Ihnen die Werte der Daten zu zeigen Rahmen, was wir jetzt brauchen, ist zu klassifizieren Nehmen wir an, wir wollen Weisen Sie einen Schwellenwert zu. Sagen wir also, wenn wir haben Werte, die größer als 30 sind, wenn der Unterschied zwischen dem ersten Frame und der aktuelle Frame ist mehr als 30 we wird das als breit klassifizieren, so werden wir sagen, es gibt wahrscheinlich Bewegung in diesen Pixel, also gibt es ein Objekt in diesen Pixel und wenn der Unterschied geringer ist als 30 sehen wir in seinem schwarzen Pixel Okay, damit wir das machen können, sind wir hier. Wir kann dies mit der Schwellenwertmethode tun über Lebenslauf zur Bibliothek sagen wir frisches Delta entspricht c v2 Punkt frisch und was dies erwartet, ist das Bild, das du willst schwellen und dann willst du um einen Schwellenwert anzugeben, der so begrenzt werden soll 30 we sagte 30 und welche Farbe willst du Weisen Sie den Werten zu, die größer als sind 30 gut wollen wir in einer weißen Farbe sehen das entspricht dem 255 Wert okay und Sie müssen noch ein Argument hier ist die Schwellenwertmethode dort gibt es einige Methoden da draußen und aber wir verwenden diese Methode hier so Schwellenwert Binär, mit dem Sie experimentieren können Ordner, wenn Sie großartig mögen und jetzt lassen Sie uns sehen, wie dies einen Delta-Frame aussehen lässt wie es sehen-ich zeige frischen Rahmen okay frisches Delta toll mal sehen ich anscheinend schrieb diesen falschen Weg in Delta Frame nicht Frame Delta und ein weiterer Tippfehler in Zeile 19 Das ist hier CB-ok, hoffen wir das

Mal funktioniert es und das noch eine Fehler dieses Mal habe ich etwas verpasst hier okay diese Methode hier also die Die Schwellenwertmethode gibt tatsächlich ein zurück Tupel mit zwei Werten und dem ersten Wert ist es wird benötigt, wenn Sie andere verwenden Schwellenwertmethoden also der erste Punkt oder Der Sturz deutet grundsätzlich auf einen Wert hin für den Schwellenwert, wenn Sie andere verwenden Methoden, aber für Schwellenwert binär Sie Sie müssen nur auf das zweite Element von zugreifen der Sturz, der der eigentliche Rahmen ist das wird von einer Schwellenwertmethode zurückgegeben Sie möchten also auf das zweite Element von zugreifen das Doppel Okay, Versprechen ist ein großer Verlustfehler so können Sie meine Gliederung dort sehen, aber Sie sehen Sie auch einige Samojeden hier, weil der Schatten, so dass ich als erkannt werde ein Objekt aber meine Schatten sowie B werden wie bei Objekten erkannt-okay Sie haben jetzt die Idee, dass wir nach rechts gehen können weg und benutze diesen Thresh Delta Rahmen was ich es zuerst Delta nannte, sollte ich Nennen Sie es den neuen Rahmen, den Sie gerade kennen aus Gründen der Namenskonsistenz, damit wir fortfahren können jetzt und Konturen des Weiß erstellen Objekte in frischem Rahmen aber vorher ich möchte etwas tunsonst Ich möchte diese Bereiche verzögern, damit ich möchte die schwarzen Löcher aus entfernen diese großen weißen Bereiche im Bild so Grundsätzlich möchte ich meine Schwelle glätten Rahmen und dazu müssen Sie die verwenden Löschmethode über cv2 Bibliothek, also lasst uns Angenommen, wir möchten den Schwellenwert ändern sehen wir uns wieder verspätet du willst bestehen ein Schwellenwertrahmen dort jetzt, wenn Sie haben ein Kernel-Array und Sie möchten diesen Prozess um sehr anspruchsvoll zu sein, würde man das bestehen Array hier haben wir keine und wir brauche keinen, also musst du keinen bestehen Für diesen Parameter gibt es noch einen weiteren Parameter hier Iterationen sagen wir-so Dies definiert, wie oft Sie möchten durch das Bild gehen, um diese zu entfernen Löcher also je größer diese Zahl ist ein glatt oder das Bild wird in Ordnung sein, ich werde lass es mich schnell überprüfen oh yeah könnte ändere den Namen früher, aber ich habe es nicht getan Fischrahmen okay so können Sie wahrscheinlich feststellen, dass die Bereiche Die weißen Bereiche sind vorerst glatt Also, wenn ich weggehe Sie bemerken nur einige Bereiche, die sind dort wegen meines Schattens so scheint es um so weit zu arbeiten, lass uns aufhören, dass du es weißt großartig, also haben wir diese drei Frames Was als nächstes kommt, ist, dass wir finden müssen die Konturen dieser erweiterten Schwelle Rahmen zur Konturerkennung mit offener Lebenslauf Sie haben zwei Methoden, also haben Sie eine Kontur finden und eine Kontur zeichnen Methode und mit der Find-Kontrast-Methode Sie finden die Konturen in Ihr Bild und Sie speichern sie in einem verdoppeln Sie andererseits die Auslosung Konturmethode Zeichnen Sie Konturen in einem Bild also in diesem Fall, was wir tun wollen wollen wir die Konturen finden und dann wir wollen den Bereich davon überprüfen Kontur, nehmen wir an, Sie haben eine Kontur wie ein Kreis und so möchten Sie finden der Bereich, den diese Kontur so definiert Sie möchten diese Konturen in einem speichern Tupel, damit Sie CNTs Kamm und schreiben möchten ein weiterer Unterstrich okay, das sollte sein gleich cv um Konturen zu finden und dann Sie möchten den gewünschten Frame übergeben die Konturen zu finden und es ist gut um tatsächlich eine Kopie des Rahmens zu verwenden, also Sie möchten das Finanzielle nicht ändern Rahmen, also benutze hier die Kopie, also ist dies der erste Parameter des Rahmens Sie will die Konturen von und dann finden Sie haben die Methoden

Rufen Sie extern ab, damit Sie zeichnen möchten die externen Zähler alle Objekte das finden Sie im Bild und Sie haben noch eine weitere Argumentationskette Ca. Symbol, dies ist also eine Annäherung Methode, für die OpenCV gilt Abrufen der Konturen großartig so was wir haben ist, wir iterieren durch die aktueller Frame also langweilen wir ihn und Konvertieren Sie es in Graustufen und finden Sie die Datenrahmen und wenden Sie den Schwellenwert so an das Schwarz-Weiß-Bild finden wir dann alle Konturen der Objekte der verschiedene Objekte in diesem Bild also wenn Sie haben zwei weiße durchgehende Bereiche in Ihr Bild, aber sie sind unterschiedlich, die Sie erhalten zwei Konturen, also jeweils ein Zähler für Die Bereiche, in denen diese Ecken gespeichert werden in dieser CNT-Variablen sprechen wir also über den aktuellen Frame und das ist was wir wollen tun, wir wollen herausfiltern diese Ecken, also wollen wir das überprüfen wir wollen nur die Konturen behalten, die Nehmen wir an, Sie haben einen Bereich, der ist größer als 1 auf 1.000 Pixel dafür Sie müssen iterieren, sagen wir für 2 in CNTs und wenn CV 2.2 Bereich der Kontursortierung der Kontrolle, die wir durchlaufen weiter bis zum Anfang des vollen Wiederholen Sie die Schleife. Dies bedeutet also, dass wir Sagen wir, Python hat drei Ecken gefunden und es wird Gehen Sie den ersten durch und es wird sagen Wenn der Bereich dieser Kontur so ist, verwenden wir der Konturbereich der Civic zwei Bibliothek, wenn der Bereich weniger als 1.000 hat Pixel gehen zur nächsten Kontur, also gehe zu die zweite Kontur und erneut prüfen und immer wieder anders wenn der Bereich ist größer oder gleich eintausend der Die nächsten Zeilen hier nach der for-Schleife werden sei exegeschnitten so was wir tun wollen wir tun wenn ein Gegenteil größer als 1.000 ist Pixel gut wollen wir die zeichnen Rechteck, das diese Kontur umgibt Stellen Sie sicher, dass Sie sich im aktuellen Frame befinden innerhalb der for-Schleife sind wir also noch iterieren und so sind dies die Parameter, die das Rechteck definieren und das wäre gleich CB zu Punktbindung Rechteck über der aktuellen Kontur, wenn die Kontur ist gleich oder größer als 1000 Pixel also wenn ich es esse also wenn es ein hat Fläche von mindestens 1000 Pixel dies würde ausgeführt werden, so sind wir Erstellen eines Rechtecks ​​und dann wollen wir Zeichne dieses Rechteck zu unserem Rahmen zu unserem aktueller Rahmen also CV zum Rechteck also wir verbrauchen diese Methode bereits in unserem Gesicht Erkennungsvorträge hier möchten Sie Übergeben Sie den Farbrahmen so, dass Rahmen und Sie möchten x und y angeben hier also sind dies die Koordinaten der oberen linke Ecke des Rechtecks ​​XY und Sie möchte die Koordinaten der angeben rechte untere Ecke des Rechtecks ​​als gut so X w einfach so und auch die Farbe von Ihr Rechteck sagen wir grün und mit Sagen wir drei, also was wir hier gemacht haben Werkzeug und sehen ist, dass wir dies erstellt haben Tabelle mit diesen vier Koordinaten dies Werte, denen dies zugewiesen wird automatisch, so dass x und y die erhalten Wert von vom Rechteck, das dies begrenzt Kontur dieser Stromregelung für Schleife und dann werden diese Werte verwendet um ein Rechteck in den Rahmen in der zu zeichnen aktueller Frame und dann wollen wir zeigen diesen aktuellen Frame, also lass es mich hier hinzufügen in show mm nennen wir diesen alten Rahmen und Rahmen eigentlich ist diese Methode hier Bindung richtig oh lass es mich in der

versuchen Skript jetzt Währung v2 hat kein Attribut finde Kegelkonturen, also habe ich hier Sie dort, die nicht da sein sollten, lassen Sie uns Versuchen Sie es noch einmal Labor, das ist lustig, wie ich neige um diese Welt zu beherrschen, kommen Sie zur Gebietslinie 24 und entferne dich und es wird sein Kultur ist nicht wieder definiert Ich habe ein anderes hier also Bier mit mir probieren wieder und Sie wissen, diese Zeit scheint zu sein Arbeiten so keine Objekte Objekte keine Objekte Objekte großartig großartig, das ist es, was ich wollte dich in dieser Vorlesung unterrichten und Wir werden mit unseren nächsten Wahlen fortfahren denn was wir bisher gemacht haben, ist das wir können dieses Objekt erkennen und wir können Wirf ein Rechteck oder auf dieses Objekt, aber das ist nicht sehr praktisch meine ich in In der realen Welt reicht es nicht aus, nur zu zeichnen ein Rechteck um Ihr Objekt und dann das war’s Also, was machen wir im nächsten Vortrag ist, wir werden die Zeiten speichern dass das Objekt in den Rahmen eintritt, wenn Das Objekt verlässt den Rahmen, also haben wir einige weitere Gesetze, die diesem Code hinzugefügt werden sollen, und ich Ich weiß, dass dieser Cole hier ziemlich viel zu war verbrauchen aber aber ich hoffe diese sind klar Wenn Sie Fragen haben, wenden Sie sich bitte an Fühlen Sie sich frei, sie zu fragen und wir sehen uns in der nächsten Vorlesung Also gut, ich habe meine Bewegung Erkennungsprogramm läuft hier und als Sie sehen, das erfasst mich bei In dem Moment, in dem ich wegziehe, kannst du nur sehe dort einige Schatten, also ist das großartig aber wie gesagt du möchtest vielleicht speichern die ganze Zeit so, wenn ein Objekt eintritt den Rahmen, so dass Sie mit enden so etwas ist das erste Eintritt als Startzeit und hier ist wo das Objekt den Rahmen verlassen hat und dann der zweite Eingang des Objekts und so weiter Ja, ich sollte dir zeigen, wie man baut zu diesem Stall mit diesem Skript so wir wird hier auf dem Weg zu etwas mehr Code hinzufügen Beginnen Sie damit, um zuerst herauszufinden der Punkt die Linie im Skript wo Der Status ändert sich von sagen wir Bewegung nicht nicht Bewegung und so haben wir Keine Bewegung hier, sobald die Webcam Trigger Nehmen wir an, der Status ist Null, also nur ein Symbol, das ich wähle bezeichnen, dass es keine Bewegung in der gibt aktuelles Bild, dann bekommst du das zuerst Rahmen mit dem Status Null und dann bewerten Sie, ob die Der erste Frame ist bekannt und dann Sie Setzen Sie die Schleife wieder fort, dann greifen Sie Der zweite Frame ist noch so niedrig Null, dann wenden Sie die Differenz an Schwelle erweitern und dann iterieren Sie durch Konturen also, wenn Sie einen Bereich finden das ist weniger als ich dies früher ändere Ich habe es auf 10.000 gesetzt, also wollte ich erkennen größere Objekte, weil ich näher an war die Kamera also wollte ich es so einstellen abhängig davon, welche Objekte Sie möchten Erfassen Sie, wie Sie diese anpassen möchten Pixel hier also 10.000 ist so etwas wie 100 x 100 Pixel Fenster, also sind wir Überprüfen Sie, ob Sie kein Fenster finden, das ist größer als 10.000 und Sie fahren fort zum Anfang der Schleife bis Sie Finden Sie ein Steuerelement mit dieser Größe größer als dies, wenn Python Punkte lasst uns Zähler mit dieser Größe, die wir ändern möchten und lassen Sie uns nun diesen Status ausdrucken

variabel, also was Sie tun möchten, ist drucken es am Ende Ihrer Gruppe so Status und lassen Sie mich diese genug Arrays löschen welche gedruckt werden, brauchen wir nicht diese und machen hier etwas Platz, so ist dies innerhalb der Schleife und ich jetzt erwartet siehe den Status von 1 oder 0 0 ausgedruckt abhängig davon, ob es ein Objekt gibt arbeiten das heißt, wir haben jetzt den aktuellen Status von den Rahmen und wir können diesen nicht verwenden 0 für andere Dinge, also mal sehen, es gibt nichts im Moment lass mich minimieren dies, damit wir die Konsole sehen können, die dies ist gut toll, also wird 0 ausgedruckt und Wenn jetzt etwas auftaucht, sehen Sie noch einmal 1 0 1 1 0 großartig können wir jetzt Wenden Sie einfach eine Ihnen bekannte Datums-/ Zeitmethode an wie Datum / Uhrzeit nicht und das würde Notieren Sie die Zeit jedes Frames, damit wir will das nicht genau wir wollen ein verwenden Datum / Uhrzeit, aber keine Methode, aber nicht wie das, weil das mal aufzeichnen würde für Jeder Frame, also was wir stattdessen wollen, ist wir wollen wissen, wo sich der Status ändert von 0 bis 1, was anzeigt, dass dort ist ein Objekt, das in den Rahmen eintritt, also wir will diese Zeit aufzeichnen und wir auch möchte das andere Mal aufnehmen, wenn Der Status ändert sich von 1 auf 0, so dass Objekt verlässt den Frame sagen wir Status Polizei, die MP-Klammern entspricht also eine leere liste und dann möchte ich Hängen Sie den Status des Objekts an dieses an Liste Nachdem diese Schleife beendet ist, ist dies hier also möchte ich hier auf dem gleichen Level sein mit Schleife, also möchte ich etwas anwenden außerhalb des Buches also Statusliste, die ich möchte um den aktuellen Status anzuhängen alle Liste hier in der Statusliste groß und zu veranschaulichen, um Ihnen zu zeigen, was dies Statusliste ist ungefähr ich möchte drucke es tatsächlich aus und ich würde wollen um eine Liste außerhalb des Kabels auszudrucken Schleife, damit ich nicht jede ausdrucken möchte Mal iteriert die Schleife so ohne Bewegung Bewegung hier und beende so das alles Status für jeden über die Frames so 0 0 0 keine Bewegung und dann etwas eingegeben der Rahmen und das ist etwas eingegeben Zum Teufel sage ich 30 Frames, dass die Objekt verlässt den Rahmen und das wars Was Sie jetzt tun möchten, ist, dass wir erfassen Sie also, was als nächstes kommt, also das nächste ist, wir wollen die Zeit erfassen, die wir von 0 auf 1 und auch von 1 auf 0 wechseln Also im Grunde, was uns interessiert ist es, die letzten beiden Elemente der zu erfassen Statusliste Nehmen wir also an, wir haben Status 0 also beginnen wir mit einer leeren Liste der erster Punkt, der an angehängt wird Statusliste ist 0 und dann die zweite Artikel sagen wir wird 0 sein oder sagen wir, wir werden eins sein, also wollen wir Wenden Sie eine Bedingung an, um zu überprüfen, ob die Die letzten beiden Elemente der Listen ändern sich Ich weiß also, dass dies nur einmal verwirrend sein kann Ich fahre diese vier Codezeilen hier du wirst es verstehen und es wird machen viel Sinn, also wollen wir prüfen, ob Statusliste also das letzte Element der Statusliste mit einem Index von minus Ich erinnere mich an die Listenindizierung, wenn dies ist gleich 1 und Statusliste mit Index von

minus 2 also das Element, das zuerst hinzugefügt wurde Das Element, das als zweites hinzugefügt wurde, ist gleich auf 0 wollen wir das Datum und die Uhrzeit von aufzeichnen Dieses Ereignis in einer Liste, also erstellen wir ein Liste hier sagen x gleich leer and dann wir Gehen Sie hier hierher und sagen Sie x dot append date Zeit, aber jetzt wissen Sie darüber Funktion bereits, also wollen wir anhängen der aktuelle Zeitstempel während dieser Änderung oder ab Datum Uhrzeit Importdatum also Tag Zeitklasse aus der Datumszeitbibliothek also Wir zeichnen im Grunde die Zeit auf, als Der Status wurde auf 1 geändert und wir möchten auch um die Zeit abzurufen, zu der der Status ändert sich von 1 auf 0, so dass wir eine haben würden ähnlich bedingt, aber dies wird 0 sein Also, was hier passiert ist, lass uns gehen zurück zum Anfang der Schleife also Python hat den ersten Frame eingefangen und konvertiert es wird grau und verwischt es und wendet ein an Gaußsche Unschärfe dort bis zum ersten Frame und dann haben wir den ersten Frame in der gestohlen erste Frame-Variable und dann gehen wir voraus und berechnen Sie die Differenz zwischen dem ersten Frame des Stroms Rahmen finden Konturen und dann, wenn dieses Gesetz findet Konturen größer als 10000 Status Variable ändert sich von 0, also begann sie bei 0, also ändert es sich hier bei 1, was bedeutet Diese leeren Statuslisten erhalten die ein anderer Wert, aber der erste Wert ist immer 0, damit die Liste mit 0 beginnt du weißt wie hier also das allererste Wert ist 0, sagen wir für die nächsten 10 Frames wird es 0 0 0 0 sein und so weiter und dann, wenn ein Objekt den Rahmen betritt, habe ich Wenn sich der Status auf 1 ändert, haben wir 0 0 0 0 und dann 1 und dann was wir sind Hier vergleichen wir die letzten zwei Punkte der Liste ok und hier ich möchte die Zeitliste ausdrucken damit du siehst was los ist und ich Erwarten Sie einen Fehler beim ersten Ausführung hier, weil wir etwas haben mehr zu tun, aber mal sehen, ja, es heißt Dieser Index liegt außerhalb des Bereichs, dh Python hat Probleme beim Zugriff auf die zweiter Punkt der Liste, weil die Liste hat keine Gegenstände hier, also hat es keine Gegenstände und dann fügen wir einen Artikel hinzu, also fügen wir den Status hinzu und dann versucht Python, die zweite zu finden Artikel, aber es gibt keinen zweiten Artikel, also wir müssen einen Trick machen wir müssen zwei Elemente hinzufügen, sagen wir keine und niemand weiß, was Sex gut ist Skript erneut, damit dort kein Objekt vorhanden ist im Moment erscheint nun ein Objekt Zeit Also drei Eingänge und ich habe es verlassen, also lass Ich gehe diese Liste durch, jetzt ist dies unsere Zeiten Liste und so ist dies die Zeit so das Jahr der Monat ein Tag und unsere Minuten und Sekunden und dann Mikrosekunden in hier ist dies also die Startzeit, wenn ein Objekt betrat den Rahmen für das erste Zeit und dann ist dies die Zeit, in der die Objekt verlässt den Rahmen, also blieb ich dort für zwei Sekunden also 51 bis 53 die Das nächste Objekt betritt den Rahmen so von diesem Sekunden dazu also für zwei weitere Sekunden und dann ein weiteres drittes Mal von Null bis eins von einer Sekunde, also haben wir drei

Eingänge im Rahmen also hoffe ich, dass macht Sinn das ist gut aber manchmal sehen Sie, dass es passieren kann, wenn Sie Führen Sie das Skript aus, damit Sie Hintergrund dann zeigt das Objekt die Objekt verschwindet zeigt wieder und dann Wenn Sie das Programm an dieser Stelle beenden Lass es mich beenden, du wirst sehen, dass du hast die Stoppzeit hier für die erste Eingang dann die Endzeit und dann Sie habe hier eine andere Quellzeit für die zweiter Eingang aber dann hast du nicht Beenden Sie die Zeit, damit Sie die hinzufügen können senthil Ich bewege den ganzen Ausgang deines Verlorenen Objekt, das zufällig Wetterwind ist wurde beendet, also willst du hier am gehen Ende und Skript wartet auf okey also wenn Wenn Sie hier auf Beenden klicken, wird die Wild-Schleife Pause, aber vorher möchten Sie vielleicht Überprüfen Sie den Status Wenn also der Status eins ist und in diesem Fall Sie würden hier mit diesem Szenario enden, also Wenn der Status eins ist, wenn Sie Q drücken Schlüssel vom Schlüsselbund Sie möchten Ihrem ein weiteres Element hinzufügen