[PYTHON] [Développement à distance] Application d'analyse vidéo (Pratique 3)

Dans l'exercice 2 de Dernière fois, nous avons pratiqué les composants du système de «contrôle». Cette fois, nous expliquerons les composants du système d'analyse vidéo avec le thème de la "lecture du code à barres / QR code".

Créer une nouvelle application

Créez une nouvelle application comme vous l'avez fait dans les exercices précédents. 1 アプリの新規作成.png

Ajouter une source vidéo

Sélectionnez "Média" dans le menu en bas à gauche de l'écran de l'onglet "Configuration" pour ajouter un élément à utiliser comme entrée vidéo. Dans "Catégorie" Standard (USB) URL (fichier réseau) navigateur bureau Douane Peut être sélectionné, et dans "Type", vidéo voix Vidéo et audio Peut être sélectionné. Dans cet exercice, nous n'utiliserons que la vidéo (pas d'audio) de la caméra montée sur l'ordinateur portable ou la caméra connectée via USB, et réglerons comme indiqué dans l'écran ci-dessous. 2 メディアの追加ドロップダウン.png 3 メディアの追加ダイアログ.png L'onglet Paramètres de cet élément offre une variété d'options, notamment: Dans cet exercice, augmentons la "fréquence d'images maximale" de la valeur par défaut de 2 à 5. 4 最大フレームレート.png

Analyse vidéo ajoutée

Une fois que vous avez ajouté la source vidéo, il est temps d'ajouter les composants d'analyse vidéo. Sélectionnez "Nouveau" dans le menu en bas à gauche de l'écran et ajoutez comme suit. 5 構成要素の新規作成.png 6 ビデオ解析のダイアログ.png Dans l'onglet "Paramètres" de l'analyse vidéo, définissez comme suit. En d'autres termes Image d'entrée: sélectionnez la source de la vidéo ajoutée à l'étape précédente Limiter le cycle d'analyse: désactivé Limiter le cycle de livraison: désactivé Enregistrer les résultats de l'analyse: Activé À. 7 ビデオ解析の設定.png

Écrire le code d'analyse vidéo

Sélectionnez l'onglet Code dans l'onglet Configuration. Dans cet exercice, un module appelé "pyzbar" est utilisé pour lire le code à barres et le code QR, donc utilisez d'abord le script d'installation "Install.ps1".         python -m pip install pyzbar Pour installer ce module. 8 Install.ps1.png Vérifions si le script d'installation fonctionne correctement. Après avoir appuyé sur le bouton "Enregistrer" en haut de l'écran, sélectionnez "Exécuter le script d'installation" dans le menu en bas à gauche de l'écran. Comme indiqué ci-dessous, la boîte de dialogue d'exécution du script d'installation s'affiche, et si «Exécution terminée» s'affiche en bas à gauche de la boîte de dialogue, c'est correct. Cliquez sur le bouton "Fermer". 9 インストールスクリプトの実行結果.png Le code Python pour l'analyse vidéo est au début,

python


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

Et importez le module installé par le script d'installation et le module utilisé pour dessiner le code barre détecté avec une ligne. Maintenant, dans l'analyse vidéo, la fonction   new_video_frame(self, video_frame, time_sec) L'image à analyser est notifiée côté Python, le processus d'analyse est effectué dans cette fonction et le résultat est notifié côté plateforme. Ici, l'image d'entrée est stockée dans l'argument video_frame en tant que type numpy.ndarray, et le temps écoulé (en secondes) depuis le début de l'application est stocké dans le type float dans time_sec. Considérant le cas où plusieurs codes-barres sont inclus dans l'image, cette fonction est implémentée comme suit.

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)

La fonction set_value () sert à notifier le côté plateforme des nouvelles données comme indiqué dans l'exercice 1, et cette application organise la valeur du code à barres et le type de code à barres pour chaque code à barres détecté. Informez ce que vous avez fait. La fonction ** set_video_frame () ** est utilisée pour notifier à la plateforme l'image du résultat de l'analyse vidéo. 10 ビデオ解析のソースコード.png

Modifier la page d'utilisation

Définissez comme suit dans l'onglet "Afficher les éléments" dans l'onglet "Page d'utilisation". 11 表示項目.png Dans l'onglet «Disposition», il y a deux éléments d'affichage, qui sont modifiés comme suit à titre d'exemple. Premièrement, "l'image de trame après analyse", qui est un composant de l'analyse vidéo, peut être laissée comme format d'expression par défaut de "image", et la taille et la position d'agencement du rectangle sont éditées. Ensuite, pour "Historique", sélectionnez "Tableau de l'historique des arrangements" comme format d'expression et modifiez le titre, l'en-tête, etc. dans les paramètres des options sur le côté droit de l'écran. 12 レイアウト.png

Courir!

Appuyez sur le bouton "Enregistrer" en haut de l'écran, puis sur "Démarrer" l'application. Lorsque l'appareil photo lit le code à barres ou le code QR, le contenu est affiché sur l'écran «Mise en page». Si la caméra n'est pas mise au point et ne peut pas être lue correctement, vous pouvez l'ajuster à l'aide de l'application "Caméra" installée en standard sur Windows 10.

  1. Sélectionnez "Caméra" dans le menu Windows. 13 カメラを選択.png
  2. Sélectionnez "Shoot video" sur le bord droit de l'écran, puis appuyez sur le bouton de réglage en haut à gauche pour activer le "mode Pro". 14 プロモード.png
  3. Appuyez sur le bouton «Mise au point manuelle» dans le centre gauche de l'écran et réglez le bouton sur «Infini» en haut. 15 無限遠.png
  4. Fermez l'application "Caméra" et réessayez sur l'outil de gestion de Limotte.

Attributs d'entrée vidéo

Au fait, comment obtenez-vous le nombre de pixels verticaux et horizontaux et la fréquence d'images de la vidéo à analyser? Dans la programmation des composants dans Limotte, ces informations sont passées à l'argument opt de la fonction \ _ \ _ init \ _ \ _ (). Par exemple, au début de la fonction new_video_frame ()         print(self._opt) Si vous l'écrivez et l'exécutez, ce qui suit sera affiché dans la fenêtre "Console" de l'onglet "Code" de l'onglet "Configuration".

{'__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}

Vous pouvez voir que la valeur de la clé '\ _ \ _ video \ _ \ _' contient des attributs liés à la source.

Attention! En tant que spécification de plate-forme, les composants d'analyse vidéo et audio n'apparaissent pas sur la console lorsque print () est exécuté dans la fonction \ _ \ _ init \ _ \ _ (). </ font>

Résumé

Dans cet exercice, nous avons expérimenté les composants du système «d'analyse vidéo». La fonction new_video_frame () donne une image de la plateforme, l'analyse, et sets_value () et [set_video_frame ()](https :: //www.remotte.jp/ja/user_guide/program/functions) Je veux apprendre à notifier le côté plateforme du résultat de l'analyse par une fonction. Dans le prochain exercice, nous traiterons des applications d'analyse vocale et créerons un «indicateur de niveau» pour la voix acquise à partir du microphone.

Recommended Posts

[Développement à distance] Application d'analyse vidéo (Pratique 3)
[Développement à distance] Application d'analyse vocale (pratique 4)
[Développement à distance] Application de contrôle (pratique 2)
Développement d'applications WEB à l'aide de django-development partie 1-
Développement d'applications Web avec Flask
[Développement à distance] Application de contrôle (pratique 2)
Faisons une rumba distante [Matériel]
Faisons une rumba distante [Logiciel]
[Développement à distance] Application d'analyse vidéo (Pratique 3)
[Développement à distance] Application d'analyse vocale (pratique 4)
Premier développement Django
Faisons un Makefile et construisons-le (super débutant)