Webcam OpenCV
Dans cette courte démonstration, nous apprenons à accéder à une webcam et à afficher ce flux en direct à l’aide de Python et OpenCV.
Accéder à la webcam avec l’aide de Python et OpenCV
Chaque fois que nous travaillons sur un projet de vision par ordinateur où nous devons accéder aux flux de caméras en direct, si nous voulons faire la détection du masque facial, ou si nous concevons un projet où nous voulons faire la détection de la distance sociale.
Dans ce cas, nous devons accéder aux flux en direct de notre caméra, et quels que soient les flux en direct que nous recevons de notre caméra, l’instruction suivante peut être utilisée à des fins différentes.
Voyons le code pour accéder au flux de caméra en temps réel avec OpenCV. Une fois que nous avons importé la bibliothèque opencv
, nous devons utiliser la méthode VideoCapture()
de la bibliothèque opencv
.
Il capture la vidéo à partir de différentes sources. Il peut capturer une vidéo à partir de votre système informatique local ou une vidéo à partir de la caméra de votre ordinateur portable, ou vous pouvez capturer une vidéo à partir de n’importe quelle caméra IP.
Nous devons fournir la source de capture vidéo entre parenthèses.
WC = cv2.VideoCapture(0)
Vous pouvez maintenant voir que nous avons fourni la source 0
, ce qui signifie qu’elle accédera à la caméra par défaut de notre ordinateur portable. Si nous voulons accéder à n’importe quelle vidéo stockée dans le système informatique, nous pouvons transmettre le chemin complet de notre vidéo sous forme de chaîne.
Si vous souhaitez accéder à une caméra IP, vous devez fournir le chemin complet de votre caméra IP. Nous considérons une adresse fictive, et ce serait quelque chose comme ça.
WC = cv2.VideoCapture("https://3.4.5.6/cam2")
Mais dans cet article, nous allons essayer d’accéder à la caméra par défaut de notre ordinateur portable, et pour cela, nous devons mettre la source sur 0
. Il capturera les flux en direct de la caméra.
Une fois que nous avons capturé la vidéo, nous la stockons dans un objet, et après cela, nous essaierons de lire chaque image de la vidéo ou du flux en direct que nous recevons de la caméra.
La vidéo n’est rien d’autre qu’une séquence d’images, et dans le domaine de la vision par ordinateur, nous appelons cela des cadres.
Nous allons maintenant écrire un tas de code dans la boucle while
; il continuera à lire à l’infini les flux en direct d’une caméra. Nous lisons les cadres de l’objet WC
en utilisant la méthode read()
, et ce cadre n’est rien d’autre qu’une image.
while True:
# this will read images/frames one by one
RET, F = WC.read()
cv2.imshow("Live Feeds", F)
L’instruction suivante affiche ces images à l’aide de la méthode imshow()
, qui a deux arguments. L’un est le nom de la fenêtre, qui apparaîtra dans le coin supérieur droit, et le second est le contenu de l’image, le tableau numpy
.
Dans l’instruction suivante, nous recevons les flux d’une caméra en direct, et celle-ci continuera à afficher des cadres ou des images dans notre programme. Il faut casser cette boucle pour arrêter cette boucle infinie ou les flux en direct de la caméra.
Nous devons utiliser v2.waitKey(1)
, qui gardera la fenêtre ouverte jusqu’à notre action si nous mentionnons que la touche sur laquelle nous appuyons sur notre clavier doit être la sortie de la boucle while
.
Si nous appuyons sur la touche définie, cela arrêtera automatiquement les flux en direct auxquels nous accédons depuis une caméra.
A la fin du code, nous libérons notre objet WC
. Nous appelons la méthode destroyAllWindows()
, qui détruira toutes les fenêtres que nous avons ouvertes pour afficher nos flux en direct.
import numpy as np
import cv2
# Capture video from storage/laptop camera/IP based camera
WC = cv2.VideoCapture(0)
while True:
# this will read images/frames one by one
RET, F = WC.read()
cv2.imshow("Live Feeds", F)
KEY = cv2.waitKey(1) # wait for key press
if KEY == ord("q"):
break
WC.release()
cv2.destroyAllWindows()
Nous pouvons maintenant voir que la caméra capture une vidéo en temps réel.
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn