Le moyen le plus rapide d'obtenir régulièrement des images de caméra avec opencv de python

Contexte

Nous allons vous présenter comment acquérir facilement une image de caméra à l'aide d'opencv et comment l'exécuter régulièrement. Les caméras ici sont limitées aux caméras qui peuvent être contrôlées par opencv, telles que les caméras USB et les caméras intégrées. Les paramètres, etc. sont basés sur l'hypothèse que vous utilisez python avec la série anaconda3. Il fonctionne sur n'importe quel système d'exploitation tel que Windows, Mac et Linux.

Si vous souhaitez effectuer un contrôle automatique avec un appareil photo haut de gamme tel qu'un appareil photo reflex à objectif unique, gphoto semble être un must. Les modèles compatibles de gphoto sont http://www.gphoto.org/proj/libgphoto2/support.php, et plusieurs sont pris en charge. Contrôler un appareil photo reflex mono-objectif à partir d'une tarte aux râpes est utile.

Cadre environnemental

installation opencv

Comme anaconda n'inclut pas opencv par défaut,

python


conda install -c conda-forge opencv

Exécutez et entrez.

schedule

Ceci n'est pas inclus dans anaconda, vous pouvez donc utiliser pip.

python


pip install schedule

La raison pour laquelle anaconda n'est pas inclus dépend des détails du développement, il n'est donc pas nécessaire de poursuivre profondément.

Comment obtenir une image de caméra une seule fois

code

oneshot.py


#!/usr/bin/env python

import cv2

deviceid=0 # it depends on the order of USB connection. 
capture = cv2.VideoCapture(deviceid)

ret, frame = capture.read()
cv2.imwrite('test.jpg', frame)

--Capture = cv2. Obtenez l'ID de l'appareil avec VideoCapture (deviceid). Cependant, notez que l'ID de l'appareil change en fonction de l'ordre de pointage dans le cas d'une caméra USB. Normalement, le n ° 0 doit être intégré et la caméra USB doit être le n ° 1. --ret, frame = capture.read () À ce moment, les données d'image sont enregistrées dans le cadre. --Utilisez cv2.imwrite ('test.jpg', frame) pour enregistrer l'image acquise au format jpg. Le format du fichier de sauvegarde est déterminé par l'extension.

Pour plus d'informations sur l'enregistrement d'images avec OpenCV, reportez-vous à Lecture et enregistrement de fichiers image avec Python, OpenCV. Capturer la vidéo de la caméra intégrée Mac avec python peut être utilisé comme référence pour déterminer les erreurs et passer en échelle de gris.

Méthode d'exécution

Dans le répertoire où se trouve oneshot.py, dans un environnement où python a un PATH

python


python oneshot.py

Ou

python


chmod +x oneshot.py
./oneshot.py

est. S'il s'agit de Linux ou Mac, utilisez le terminal. windows peut être une invite de commande, mais il peut être plus facile de l'exécuter à partir d'une application de type IDE.

Comment obtenir des images de caméra selon le calendrier

code

scheduled_shot.py


#!/usr/bin/env python

import cv2
import datetime
import schedule
import time

deviceid=0 # it depends on the order of USB connection. 
capture = cv2.VideoCapture(deviceid)

def job():
	ret, frame = capture.read()
	strdate=datetime.datetime.now().strftime('%Y%m%dT%H%M%S') 
	fname="image_" + strdate + ".jpg "
	cv2.imwrite(fname, frame) 
	print(fname + " is created.")

#do job every 10 seconds
schedule.every(1/6).minutes.do(job)

while True:
  schedule.run_pending()
  time.sleep(1)

Cette fois, l'image est acquise toutes les 10 secondes. Pour savoir comment utiliser schedule, reportez-vous à Exécutons périodiquement des modules en utilisant schedule.

L'écriture while True n'est peut-être pas courante dans les logiciels, mais c'est un must pour le contrôle matériel. Avec cela, vous pouvez implémenter une fonction qui crée une boucle infinie, par exemple, dans le cas d'un cuiseur à riz, si vous pointez vers le cordon d'alimentation, il continuera à fonctionner. Ici, avec True, vous pouvez continuer à prendre des images une fois toutes les 10 secondes indéfiniment. Pour échapper à la boucle infinie, vous devez forcer la fin du programme avec cntl + c etc. (Dans cette façon d'écrire, vous pouvez également définir une minuterie pour qu'elle se termine après un certain laps de temps).

Générez le nom de fichier à l'aide de datetime afin que le nom de fichier ne soit pas réécrit et que les noms de fichier soient classés par ordre chronologique. Veuillez vous référer à Convertir la date, l'heure et la chaîne de caractères avec Python datetime.

Dans le cas d'une acquisition continue, une fois que vous avez acquis l'image, vérifiez la taille du fichier et considérez l'espace dont vous avez besoin. Si vous remarquez, la capacité restante du disque est souvent nulle.

Méthode d'exécution

python


python scheduled_shot.py
...
image_20201001T110144.jpg is created.
image_20201001T110154.jpg is created.
image_20201001T110204.jpg is created.

Désormais, une fois exécutée, l'image sera enregistrée toutes les 10 secondes. Puisqu'il n'y a qu'une terminaison forcée, elle est terminée en terminant de force le programme avec cntl + c ou similaire.

autres

Voir les images

Si vous essayez de visualiser l'image avec imshow de python etc., la sortie des images récentes sera considérablement lente en raison de la grande capacité. Enregistrez l'image au format png ou jpeg avant de la visualiser.

Vers un degré d'automatisation plus élevé

Si cela ne suffit pas à utiliser, [Créons une interface graphique avec PyQt5! Vous pouvez facilement créer une interface graphique telle que Explication de l'introduction à l'utilisation. Cependant, du point de vue de la stabilité, il est préférable de le faire fonctionner correctement avec CUI.

En outre, dans un tel programme, il est préférable de concentrer le programme d'acquisition de données sur celui-ci. Le processeur et les programmes qui acquièrent et enregistrent les images de la caméra doivent se concentrer sur la non-perte des données. Les opérations secondaires telles que le téléchargement, le transfert et le traitement des données dans la dernière étape sont effectuées par un autre programme.

Recommended Posts

Le moyen le plus rapide d'obtenir régulièrement des images de caméra avec opencv de python
Le moyen le plus simple d'utiliser OpenCV avec python
Le moyen le plus rapide pour les débutants de maîtriser Python
Le moyen le plus simple de démarrer avec Django
Le moyen le plus simple de synthétiser la voix avec python
Excel X Python La technique de travail la plus rapide
Introduction à Python avec Atom (en route)
Capture de caméra avec Python + OpenCV
Connaissances minimales pour démarrer avec le module de journalisation Python
Probablement le moyen le plus simple de créer un pdf avec Python 3
Comment entrer dans l'environnement de développement Python avec Vagrant
Enregistrer des images sur le Web sur un lecteur avec Python (Colab)
[Introduction à Python] Comment obtenir des données avec la fonction listdir
Récupérez la source de la page à charger indéfiniment avec python.
Lien pour commencer avec python
Obtenez la météo avec les requêtes Python
Obtenez la météo avec les requêtes Python 2
Comment obtenir la version Python
Reconnaissance faciale avec caméra avec opencv3 + python2.7
Charger une image gif avec Python + OpenCV
Le moyen le plus rapide d'essayer EfficientNet
Un moyen facile d'arrondir après la virgule décimale en python3
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
PhytoMine-I a essayé d'obtenir les informations génétiques de la plante avec Python
Essayez d'utiliser l'appareil photo avec OpenCV de Python
[Python] Récupère le nom de la variable avec str
Capturer des images avec Pupil, python et OpenCV
Caméra à pixel unique à expérimenter avec Python
[python, openCV] base64 Reconnaissance faciale dans les images
[Python] Lire des images avec OpenCV (pour les débutants)
Ajouter du bruit gaussien aux images avec python2.7
Télécharger des images sur Google Drive avec Python
La route de la compilation vers Python 3 avec Thrift
Comment couper la partie inférieure droite de l'image avec Python OpenCV
Comment obtenir la différence de date et d'heure en secondes avec Python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
Obtenez et estimez la forme de la tête en utilisant Dlib et OpenCV avec python
J'ai essayé de "lisser" l'image avec Python + OpenCV
[Python] Récupérez les fichiers dans le dossier avec Python
J'ai essayé de "différencier" l'image avec Python + OpenCV
Convertissez des PDF en images en masse avec Python
Essayez de résoudre le diagramme homme-machine avec Python
Spécifiez le fichier exécutable Python à utiliser avec virtualenv
Dites bonjour au monde avec Python avec IntelliJ
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé de "binariser" l'image avec Python + OpenCV
Comment obtenir les fichiers dans le dossier [Python]
[Python] Comment gérer les caractères japonais avec openCV
Zubu amateur veut démarrer Python
Script Python pour obtenir des informations de note avec REAPER
Essayez de détecter les poissons avec python + OpenCV2.4 (inachevé)
Comment démarrer le projet Python en 2020 (Windows WSL et Mac commun)
[Python] Comment enregistrer des images sur le Web à la fois avec Beautiful Soup
Remarque: Comment obtenir le dernier jour du mois avec python (ajouté le premier jour du mois)
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Essayez de mesurer la position d'un objet sur le bureau (système de coordonnées réel) à partir de l'image de la caméra avec Python + OpenCV
Un moyen simple de vérifier la source des modules Python
Essayez de résoudre le livre des défis de programmation avec python3