Obtenez une liste des paramètres de caméra qui peuvent être définis avec cv2.VideoCapture et faites-en un type de dictionnaire

Problème: lorsque vous utilisez cv2.VideoCapture (), vous devez entrer manuellement les paramètres de sortie de la caméra.

Exemple


WIDTH = 100
HEIGHT = 100
FPS = 10
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, WIDTH)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, HEIGHT)
cap.set(cv2.CAP_PROP_FPS, FPS)
ret, frame = cap.read() #Ça marche ou ça ne marche pas

Selon les paramètres de sortie, la résolution ou FPS avec la valeur la plus proche peut être définie automatiquement, ou cap.read () peut générer une erreur. Je n'ai pas pu accéder aux informations de configuration correspondantes de la caméra USB à partir d'opencv, donc je les récupère à partir de la commande v412-ctl.

Commande pour afficher une liste


import subprocess
import re
cmd = 'v4l2-ctl --device /dev/video0 --list-formats-ext'
proc = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
outs_bytes = proc.communicate()[0]
outs_str = outs_bytes.decode('utf-8')
outs_str_lists = outs_str.split('\n')

d = {}
i = 0
for line in outs_str_lists:
    if "Pixel Format" in line:
        pixelformat = line.split(":")[-1].strip()
    if "Size:" in line:
        resolution = line.split()[-1]
    if "Interval" in line:
        fps = re.findall("(?<=\().+?(?=\))",line)[0].split()[0]
        _d = {"format":pixelformat,"height":resolution.split("x")[1],"width":resolution.split("x")[0],"fps":fps}
        d[i] = _d
        i +=1
print d

résultat


{0: {'format': "'MJPG' (compressed)",
  'height': '2880',
  'width': '3840',
  'fps': '15.000'},
 1: {'format': "'MJPG' (compressed)",
  'height': '2880',
  'width': '3840',
  'fps': '10.000'},
 2: {'format': "'MJPG' (compressed)",
  'height': '2880',
  'width': '3840',
  'fps': '5.000'},

Maintenant que les paramètres correspondants ont été acquis en tant que type de dictionnaire, il est devenu possible d'utiliser les informations de la caméra en tant que variables à l'intérieur du programme.

Recommended Posts

Obtenez une liste des paramètres de caméra qui peuvent être définis avec cv2.VideoCapture et faites-en un type de dictionnaire
Liste des couleurs pouvant être définies avec tkinter (mémorial)
Faisons un diagramme sur lequel on peut cliquer avec IPython
[Python] Créez un graphique qui peut être déplacé avec Plotly
Créez une Spinbox qui peut être affichée en binaire avec Tkinter
Créez une Spinbox pouvant être affichée dans HEX avec Tkinter
Créez un graphique des devises qui peut être déplacé avec Plotly (1)
Article qui peut être une ressource humaine qui comprend et maîtrise le mécanisme de l'API (avec du code Python)
Obtenir une liste d'utilisateurs IAM avec Boto3
Répertorier les packages pouvant être mis à jour avec pip
Obtenez le cours de l'action d'une entreprise japonaise avec Python et faites un graphique
Comment écrire un type liste / dictionnaire de Python3
Un serveur qui renvoie le nombre de personnes devant la caméra avec bottle.py et OpenCV
Créez facilement un TweetBot qui vous informe de la température et de l'humidité avec Raspberry Pi + DHT11.
Obtenez une liste des métriques CloudWatch et une table de correspondance des unités unitaires avec Python boto
[Python] Un programme pour trouver le nombre de pommes et d'oranges qui peuvent être récoltées
Récapitulatif du format des formats qui peuvent être sérialisés avec gensim
Il semble que le suivi des squelettes puisse être effectué avec RealSense
Les zéros NumPy peuvent être définis même avec une taille de 0
Obtenez une liste des livres électroniques DMM achetés avec Python + Selenium
Python: créer un dictionnaire à partir d'une liste de clés et de valeurs
[Python] Dessinez des données d'altitude sur une surface sphérique avec Plotly et dessinez un globe qui peut être tourné en rond et en rond
Comprendre les probabilités et les statistiques qui peuvent être utilisées pour la gestion des progrès avec un programme python
Une liste de fonctions que j'ai rencontrées avec 100 coups Numpy et j'ai pensé "C'est pratique!"
Il est étonnamment difficile d'obtenir une liste de la dernière date et heure de connexion des espaces de travail
[Python] Un programme qui trouve le nombre maximum de jouets pouvant être achetés avec votre argent
Une histoire et sa mise en œuvre selon laquelle des données arbitraires a1 * a2 peuvent être représentées par un réseau de neurones ReLU à 3 couches avec des neurones intermédiaires a1 et a2 sans erreur.
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Créez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 4
J'ai fait un shuffle qui peut être réinitialisé (inversé) avec Python
Qu'est-ce qu'un chien? Volume de requêtes GET et paramètres de requête
Comparaison de 4 styles pouvant être passés à seaborn avec set_context
Obtenez une liste de fichiers dans un dossier avec python sans chemin
J'ai écrit un tri-arbre qui peut être utilisé pour l'implémentation de dictionnaire à grande vitesse en langage D et Python
[Python] Comment créer une liste de types de dictionnaire, ajouter / modifier / supprimer des éléments et extraire avec une instruction for
Comment créer un bot Janken qui peut être facilement déplacé (commentaire)
Obtenez une liste des packages installés dans l'environnement actuel avec python
Jusqu'à ce que vous obteniez un instantané du service Amazon Elasticsearch et que vous le restauriez
Créez un Discord Bot qui peut rechercher et coller des images
Définissez la fonction Lambda et laissez-la fonctionner avec les événements S3!
Nombre maximum de paramètres de fonction pouvant être définis dans chaque langue
[Mémo personnel] Obtenez des données sur le Web et faites-en un DataFrame
L'histoire de la création d'une caméra sonore avec Touch Designer et ReSpeaker
[Python] Création d'un outil qui peut lister, sélectionner et exécuter des fichiers python avec tkinter et à propos de la partie qui a été interceptée