Cámara web OpenCV
En esta breve demostración, aprendemos cómo acceder a una cámara web y mostrar esa transmisión en vivo con la ayuda de Python y OpenCV.
Acceda a la cámara web con la ayuda de Python y OpenCV
Siempre que estemos trabajando en cualquier proyecto de visión por computadora en el que necesitemos acceder a las transmisiones de cámaras en vivo, si queremos hacer la detección de máscara facial, o diseñamos un proyecto en el que queremos hacer la detección de distancia social.
En ese caso, tenemos que acceder a las transmisiones en vivo de nuestra cámara, y cualquier transmisión en vivo que recibamos de nuestra cámara, entonces la siguiente instrucción puede usarse para diferentes propósitos.
Veamos el código para acceder a la transmisión de la cámara en tiempo real con OpenCV. Una vez importamos la biblioteca opencv
, debemos utilizar el método VideoCapture()
de la biblioteca opencv
.
Captura el video de diferentes fuentes. Puede capturar un video desde su sistema informático local o un video desde la cámara de su computadora portátil, o puede capturar video desde cualquier cámara basada en IP.
Tenemos que proporcionar la fuente de captura de video entre paréntesis.
WC = cv2.VideoCapture(0)
Ahora puede ver que proporcionamos la fuente 0
, lo que significa que accederá a la cámara predeterminada de nuestra computadora portátil. Si queremos acceder a cualquier video almacenado en el sistema informático, podemos pasar la ruta completa de nuestro video como una cadena.
Si desea acceder a cualquier cámara basada en IP, debe proporcionar la ruta completa de su cámara basada en IP. Consideramos una dirección ficticia, y sería algo como esto.
WC = cv2.VideoCapture("https://3.4.5.6/cam2")
Pero en este artículo, intentaremos acceder a la cámara predeterminada de nuestra computadora portátil, y para esto, debemos poner la fuente como 0
. Capturará las transmisiones en vivo de la cámara.
Una vez que hemos capturado el video, lo almacenamos en un objeto y, después de eso, intentaremos leer cada cuadro del video o la transmisión en vivo que estamos recibiendo de la cámara.
El video no es más que una secuencia de imágenes, y en el campo de la visión artificial, lo llamamos fotogramas.
Ahora escribiremos un montón de código en el bucle while
; seguirá leyendo infinitamente las transmisiones en vivo de una cámara. Leemos los marcos del objeto WC
usando el método read()
, y este marco no es más que una imagen.
while True:
# this will read images/frames one by one
RET, F = WC.read()
cv2.imshow("Live Feeds", F)
La siguiente instrucción muestra estas imágenes con la ayuda del método imshow()
, que tiene dos argumentos. Uno es el nombre de la ventana, que aparecerá en la esquina superior derecha, y el segundo es el contenido de la imagen, la matriz numpy
.
En la siguiente instrucción, recibimos las transmisiones de una cámara en vivo y seguirá mostrando marcos o imágenes en nuestro programa. Debemos romper este bucle para detener este bucle infinito o las transmisiones en vivo de la cámara.
Necesitamos usar v2.waitKey(1)
, que mantendrá la ventana abierta hasta nuestra acción si mencionamos que la tecla que presionamos en nuestro teclado debe ser la salida del bucle while
.
Si presionamos la tecla definida, detendrá automáticamente las transmisiones en vivo a las que estamos accediendo desde una cámara.
Al final del código, liberamos nuestro objeto WC
. Llamamos al método destroyAllWindows()
, que destruirá todas las ventanas que hayamos abierto para mostrar nuestras transmisiones en vivo.
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()
Ahora podemos ver que la cámara está capturando video en tiempo real.
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