[PYTHON] [Fernentwicklung] Videoanalyseanwendung (Übung 3)

In Übung 2 von Letztes Mal haben wir die Komponenten des "Kontroll" -Systems geübt. Dieses Mal werden wir die Komponenten des Videoanalysesystems mit dem Thema "Lesen von Barcode / QR-Code" erläutern.

Erstellen Sie eine neue App

Erstellen Sie eine neue App wie in den vorherigen Übungen. 1 アプリの新規作成.png

Videoquelle hinzufügen

Wählen Sie "Medien" aus dem Menü unten links auf der Registerkarte "Konfiguration", um ein Element hinzuzufügen, das als Videoeingang verwendet werden soll. In "Kategorie" Standard (USB) URL (Netzwerkdatei) Browser Desktop Benutzerdefiniert Kann ausgewählt werden und unter "Typ" Video Stimme Video und Audio Kann ausgewählt werden. In dieser Übung verwenden wir nur das Video (kein Audio) der am Laptop montierten Kamera oder der über USB angeschlossenen Kamera und stellen sie wie im folgenden Bildschirm gezeigt ein. 2 メディアの追加ドロップダウン.png 3 メディアの追加ダイアログ.png Die Registerkarte Einstellungen für dieses Element bietet eine Vielzahl von Optionen, darunter: In dieser Übung erhöhen wir die "maximale Bildrate" von 2 auf 5. 4 最大フレームレート.png

Videoanalyse hinzugefügt

Sobald Sie die Videoquelle hinzugefügt haben, ist es Zeit, die Videoanalysekomponenten hinzuzufügen. Wählen Sie "Neu" aus dem Menü unten links auf dem Bildschirm und fügen Sie Folgendes hinzu. 5 構成要素の新規作成.png 6 ビデオ解析のダイアログ.png Stellen Sie auf der Registerkarte "Einstellungen" der Videoanalyse Folgendes ein. Mit anderen Worten Eingabebild: Wählen Sie die Quelle des im vorherigen Schritt hinzugefügten Videos aus Grenzwertanalysezyklus: Aus Lieferzyklus begrenzen: Aus Analyseergebnisse speichern: Ein Zu. 7 ビデオ解析の設定.png

Schreiben Sie einen Videoanalysecode

Wählen Sie auf der Registerkarte Konfiguration die Registerkarte Code. In dieser Übung wird ein Modul namens "pyzbar" zum Lesen des Barcodes und des QR-Codes verwendet. Verwenden Sie daher zuerst das Installationsskript "Install.ps1".         python -m pip install pyzbar So installieren Sie dieses Modul. 8 Install.ps1.png Lassen Sie uns überprüfen, ob das Installationsskript ordnungsgemäß funktioniert. Nachdem Sie oben auf dem Bildschirm auf die Schaltfläche "Speichern" geklickt haben, wählen Sie im Menü unten links auf dem Bildschirm die Option "Installationsskript ausführen". Wie unten gezeigt, wird das Dialogfeld zur Ausführung des Installationsskripts angezeigt. Wenn unten links im Dialogfeld "Ausführung abgeschlossen" angezeigt wird, ist dies in Ordnung. Klicken Sie auf die Schaltfläche "Schließen". 9 インストールスクリプトの実行結果.png Der Python-Code für die Videoanalyse steht am Anfang.

python


from pyzbar.pyzbar import decode
import cv2
import numpy as np

Importieren Sie das vom Installationsskript installierte Modul und das Modul, mit dem der erkannte Barcode gezeichnet wurde, mit einer Linie. Nun in der Videoanalyse die Funktion   new_video_frame(self, video_frame, time_sec) Das zu analysierende Bild wird der Python-Seite mitgeteilt, der Analyseprozess wird in dieser Funktion ausgeführt und das Ergebnis wird der Plattformseite mitgeteilt. Hier wird das Eingabebild im Argument video_frame als numpy.ndarray-Typ gespeichert, und die seit dem Start der Anwendung verstrichene Zeit (Sekunden) wird im float-Typ in time_sec gespeichert. In Anbetracht des Falls, in dem mehrere Barcodes im Bild enthalten sind, wird diese Funktion wie folgt implementiert.

python


    def new_video_frame(self, video_frame, time_sec):
        data = decode(video_frame)

        for c in data:
            self._sys.set_value({'value': [c.data.decode('utf-8'), c.type]})
            
            points = c.polygon
            pts = np.array(points, np.int32)
            pts = pts.reshape((-1, 1, 2))
            cv2.polylines(video_frame, [pts], True, (0, 255, 0), 2)

        self._sys.set_video_frame(video_frame, time_sec)

Die Funktion set_value () dient zum Benachrichtigen der Plattformseite über neue Daten, wie in Übung 1 gezeigt, und diese App ordnet den Barcode-Wert und den Barcode-Typ für jeden erkannten Barcode an. Benachrichtigen Sie, was Sie getan haben. Die Funktion ** set_video_frame () ** wird verwendet, um die Plattform über das Bild über das Ergebnis der Videoanalyse zu informieren. 10 ビデオ解析のソースコード.png

Nutzungsseite bearbeiten

Stellen Sie auf der Registerkarte "Anzeigeelemente" auf der Registerkarte "Verwendungsseite" Folgendes ein. 11 表示項目.png Auf der Registerkarte "Layout" befinden sich zwei Anzeigeelemente, die als Beispiel wie folgt bearbeitet werden. Zunächst kann das "Bild nach der Analyse", das Bestandteil der Videoanalyse ist, als Standardausdruckformat für "Bild" beibehalten werden, und die Größe und Anordnung des Rechtecks werden bearbeitet. Wählen Sie als Nächstes unter "Verlauf" die Option "Arrangement-Verlaufstabelle" als Ausdrucksformat aus und bearbeiten Sie den Titel, die Überschrift usw. in den Optionseinstellungen auf der rechten Seite des Bildschirms. 12 レイアウト.png

Lauf!

Klicken Sie oben auf dem Bildschirm auf die Schaltfläche "Speichern" und starten Sie dann die App. Wenn die Kamera den Barcode oder QR-Code liest, wird der Inhalt auf dem Bildschirm "Layout" angezeigt. Wenn die Kamera unscharf ist und nicht richtig gelesen werden kann, verwenden Sie die in Windows 10 installierte Standardanwendung "Kamera", um Anpassungen vorzunehmen.

  1. Wählen Sie "Kamera" aus dem Windows-Menü. 13 カメラを選択.png
  2. Wählen Sie am rechten Bildschirmrand "Video aufnehmen" und drücken Sie dann die Einstellungstaste oben links, um den "Pro-Modus" zu aktivieren. 14 プロモード.png
  3. Drücken Sie die Taste "Manueller Fokus" in der Mitte links auf dem Bildschirm und stellen Sie den Knopf oben auf "Unendlich". 15 無限遠.png
  4. Schließen Sie die App "Kamera" und versuchen Sie es erneut mit dem Verwaltungstool von Limotte.

Videoeingabeattribute

Wie erhalten Sie übrigens die Anzahl der vertikalen und horizontalen Pixel und die Bildrate des zu analysierenden Videos? Bei der Programmierung von Komponenten in Limotte werden diese Informationen an das Argument opt der Funktion \ _ \ _ init \ _ \ _ () übergeben. Zum Beispiel am Anfang der Funktion new_video_frame ()         print(self._opt) Wenn Sie es ausführen, wird Folgendes im Fenster "Konsole" der Registerkarte "Code" auf der Registerkarte "Konfiguration" angezeigt.

{'__video__': {'width': 640, 'height': 480, 'frame_rate': 5.0, 'scale': 100.0, 'auto_scale': False, 'scaled_width': 640, 'scaled_height': 480, 'rotation': 0}, '__audio__': None, '__guid__': None, '__remotte__': None}

Sie können sehen, dass der Wert des Schlüssels '\ _ \ _ video \ _ \ _' Attribute enthält, die sich auf die Quelle beziehen.

Achtung! Als Plattformspezifikation werden Video- und Audioanalysekomponenten nicht auf der Konsole angezeigt, wenn print () in der Funktion \ _ \ _ init \ _ \ _ () ausgeführt wird. </ font>

Zusammenfassung

In dieser Übung haben wir die Komponenten des "Videoanalyse" -Systems kennengelernt. Die Funktion new_video_frame () gibt ein Bild von der Plattform aus, analysiert es und setzt_value () und [set_video_frame ()](https :: //www.remotte.jp/ja/user_guide/program/functions) Ich möchte lernen, die Plattformseite über eine Analyse über das Analyseergebnis zu informieren. In der nächsten Übung werden wir uns mit Sprachanalyseanwendungen befassen und einen "Pegelmesser" für die vom Mikrofon erfasste Stimme erstellen.

Recommended Posts

[Fernentwicklung] Videoanalyseanwendung (Übung 3)
[Fernentwicklung] Sprachanalyseanwendung (Übung 4)
[Fernentwicklung] Steuerungsanwendung (Übung 2)
WEB-Anwendungsentwicklung mit Django-Entwicklung Teil 1-
Entwicklung von Webanwendungen mit Flask
[Fernentwicklung] Steuerungsanwendung (Übung 2)
Machen wir eine Remote-Rumba [Hardware]
Lassen Sie uns eine Remote-Rumba erstellen [Software]
[Fernentwicklung] Videoanalyseanwendung (Übung 3)
[Fernentwicklung] Sprachanalyseanwendung (Übung 4)
Erste Django-Entwicklung
Lass uns ein Makefile machen und es bauen (super Anfänger)