Erstellen Sie mit Python und OpenCV einen Kamerarecorder mit Personenerkennung

einführen

In diesem Tutorial erfahren Sie, wie Sie mithilfe von Python und OpenCV eine Kameraaufzeichnungsanwendung mit Personenerkennung erstellen. Mit dieser Anwendung können wir Videos von der Computerkamera aufnehmen und die vorhandenen Teile des menschlichen Körpers automatisch erkennen und extrahieren. Mit der Leistungsfähigkeit des YOLO-Zielerkennungsalgorithmus können wir menschliche Bewegungen leicht identifizieren und isolieren. Lassen Sie uns Schritt für Schritt eintauchen und sehen, wie Sie diese Anwendung erstellen.

Voraussetzungen

Stellen Sie vor dem Start sicher, dass die folgenden Abhängigkeiten auf Ihrem System installiert sind:

  • Python 3.x

  • OpenCV-Bibliothek

  • Vorab trainiertes YOLO-Modell (yolov3.cfg und yolov3.weights)

  • VLC Media Player (oder ein anderer kompatibler Media Player)

  • ffmpeg (Befehlszeilentool) zur Videoextraktion

f5d9befe7e819ca91cf768dee461765f.png

Leistungsstarke Technologien: Python, OpenCV, YOLO und FFmpeg

Projektkonfiguration

  1. Klonen Sie das Projekt-Repository von GitHub.

  2. Das Repository finden Sie hier.

  3. Im Repository finden Sie eine ausführliche README-Datei, die Schritt-für-Schritt-Anleitungen zum Einrichten Ihres Projekts enthält. Es enthält Informationen zu Voraussetzungen, Installationsschritten und anderen Ressourcen.

  4. Befolgen Sie die Anweisungen in der README-Datei, um die erforderlichen Python-Pakete zu installieren, das vorab trainierte YOLO-Modell herunterzuladen und VLC Media Player und ffmpeg auf Ihrem System einzurichten.

  5. Die README-Datei enthält außerdem Anleitungen zur Konfiguration des Projekts, einschließlich der Platzierung von YOLO-Modelldateien und der Verwendung der Anwendung.

679ce39f10af9644d3ea5c2d63a109fa.png

Projektcodedatei: Python-Skript für Kameraaufzeichnung und Personenerkennung

Code-Link: https://github.com/g4lb/camera-recorder-with-human-detection

Nehmen Sie Videos von der Kamera auf

  1. Öffnen Sie die Datei camera_recorder.py in Ihrem bevorzugten Code-Editor.

  2. In der Datei finden Sie den Code, der zum Aufnehmen von Kameravideos mit OpenCV erforderlich ist. Dazu gehören die Initialisierung der Videoaufnahme, die Einstellung der gewünschten Videoauflösung und die Konfiguration des Videocodecs.

  3. Sie können die Konfigurationsparameter nach Bedarf ändern. Sie können beispielsweise die Auflösung anpassen, indem Sie die Werte der Variablen „frame_width“ und „frame_height“ ändern. Darüber hinaus können Sie verschiedene Video-Codecs ausprobieren, indem Sie die Variable fourcc ändern.

  4. Führen Sie das Skript camera_recorder.py aus, um die Videoaufzeichnung von der Kamera zu starten. Sie sehen den Live-Video-Feed der Kamera und eine neue Videodatei wird erstellt und im Ordner „records“ gespeichert.

Wenn Sie auf die Datei camera_recorder.py im Projekt-Repository verweisen, finden Sie alle notwendigen Konfigurationsdetails und Code-Implementierungen, um Videos von der Kamera mit Python und OpenCV aufzuzeichnen.

Menschliche Bewegung extrahieren

Nachdem wir den menschlichen Körper im Video erkannt haben, extrahieren wir die Teile, in denen sich der menschliche Körper befindet. Alle Konfigurationsdetails und Code-Implementierung finden Sie in der Datei human_detection.py im Projekt-Repository.

  1. Öffnen Sie die Datei human_detection.py in Ihrem bevorzugten Code-Editor.

  2. In der Datei finden Sie den Code, der erforderlich ist, um YOLO zur Personenerkennung zu verwenden und Frames zu extrahieren, die menschliche Bewegungen darstellen. Dazu gehören die Initialisierung des YOLO-Modells, das Festlegen des Konfidenzschwellenwerts (conf_threshold) und das Definieren von Nachbearbeitungsschritten.

  3. Sie können die Konfigurationsparameter nach Bedarf ändern. Sie können beispielsweise den Konfidenzschwellenwert anpassen, indem Sie den Wert der Variablen conf_threshold ändern. Höhere Werte führen zu einer strengeren Erkennung, während niedrigere Werte möglicherweise mehr Fehlalarme enthalten.

Wenn Sie auf die Datei human_detection.py im Projekt-Repository verweisen, finden Sie alle notwendigen Konfigurationsdetails und Code-Implementierungen, um menschliche Bewegungen aus aufgezeichneten Videos mit YOLO und OpenCV zu extrahieren.

54165c64b73dec2f474ac36613d6f078.gifDemo: Menschenerkennung in Aktion – zweimal erscheinen und verschwinden

Erkannte menschliche Körperteile als Video speichern

Sobald wir Bilder haben, die menschliche Bewegungen darstellen, speichern wir sie als separate Videodateien. Alle Konfigurationsdetails und Code-Implementierung finden Sie in der Datei human_detection.py im Projekt-Repository.

  1. Öffnen Sie die Datei human_detection.py in Ihrem bevorzugten Code-Editor.

  2. In der Datei finden Sie den Code, der zum Speichern der Einzelbilder, die menschliche Bewegungen darstellen, als separate Videodateien erforderlich ist. Dazu gehört die Konfiguration des Ausgabedateinamens, des Formats und des Dateipfads.

  3. Sie können die Konfigurationsparameter nach Bedarf ändern. Sie können beispielsweise das Ausgabedateiformat ändern, die Dateinamenskonvention anpassen oder ein anderes Ausgabeverzeichnis angeben.

  4. Führen Sie das Skript human_detection.py aus, um den menschlichen Erkennungsprozess zu starten. Das Skript analysiert die aufgezeichneten Videodateien im Ordner „records“, erkennt menschliche Bewegungen und identifiziert Einzelbilder, die auf die Anwesenheit eines menschlichen Körpers hinweisen.

  5. Der erkannte Teil des Videos wird als separate MP4-Datei im Format „video_timestamp_human.mp4“ gespeichert (z. B. „video_2023–07–06_11–52–34_human.mp4“).

Wenn Sie auf die Datei human_detection.py im Projekt-Repository verweisen, finden Sie alle notwendigen Konfigurationsdetails und Code-Implementierungen, um Frames, die menschliche Bewegungen darstellen, als separate Videodateien mit OpenCV und ffmpeg zu speichern.

1c17ca4633007d7d5db40f1bf09a7a32.png

Aufgezeichnete Videos und erkannte menschliche Körperteile: Aufzeichnungen und Ausgabeordner

Herausforderung: subprocess.run vs. subprocess.call

Während der Implementierung des Projekts kann es zu einer Herausforderung kommen, wenn Sie das Unterprozessmodul zum Ausführen von ffmpeg-Befehlen verwenden. Im Subprocess-Modul gibt es zwei häufig verwendete Funktionen: subprocess.run und subprocess.call. Beide Funktionen können zum Ausführen externer Befehle verwendet werden, weisen jedoch einige Unterschiede im Verhalten und in den Rückgabewerten auf.

Die Funktion subprocess.run wurde in Python 3.5 eingeführt und bietet im Vergleich zu subprocess.call eine leistungsfähigere und flexiblere Schnittstelle. Es ermöglicht die Erfassung der Ausgabe von Befehlen, die Behandlung von Fehlern, das Festlegen von Zeitüberschreitungen usw. subprocess.call hingegen ist eine einfachere Funktion, die den Befehl ausführt und auf dessen Abschluss wartet, ohne die Ausgabe zu erfassen oder Fehler zu behandeln.

Wenn Sie ffmpeg zum Erstellen eines Videos aus erkannten Frames verwenden, müssen Sie möglicherweise zwischen subprocess.run und subprocess.call wählen. Wenn Sie die Ausgabe erfassen oder potenzielle Fehler während der Videoerstellung beheben müssen, ist subprocess.run die empfohlene Wahl. Wenn Sie jedoch nur einen Befehl ausführen und warten müssen, bis er abgeschlossen ist, ohne die Ausgabe zu erfassen, kann subprocess.call eine einfachere Option sein.

0577ecd2751da12c6b5e1923d7c9ebe2.pngffmpeg-Befehl: Erstellt einen erkannten Videoclip eines menschlichen Körpers aus Bildern

Nutzen Sie je nach Bedarf die passende Funktion. Bitte achten Sie darauf, Fehler oder Ausnahmen zu behandeln, die beim Ausführen von ffmpeg-Befehlen auftreten können.

4120baf162b2471557da5f945d40ecee.png

Vergleich: subprocess.run vs. subprocess.call

abschließend

In diesem Tutorial haben wir mit Python und OpenCV eine Kameraaufzeichnungsanwendung mit Personenerkennung erstellt. Wir haben gelernt, wie man Videos von einer Kamera aufzeichnet, YOLO verwendet, um menschliche Körper zu erkennen und Teile mit menschlichen Körperbewegungen zu extrahieren. Mit der Leistungsfähigkeit von OpenCV und YOLO können wir den Prozess der Erkennung und Isolierung menschlicher Bewegungen automatisieren und so Möglichkeiten für verschiedene Anwendungen wie Überwachung, Aktivitätsüberwachung usw. eröffnen.

· ENDE ·

GLÜCKLICHES LEBEN

4907c861d642f2ccc2b5b42535f1dc2a.png

Dieser Artikel dient nur zum Lernen und zur Kommunikation. Bei Verstößen wenden Sie sich bitte an den Autor, um ihn zu löschen.

Supongo que te gusta

Origin blog.csdn.net/weixin_38739735/article/details/134980442
Recomendado
Clasificación