Cámara web OpenCV

Salman Mehmood 13 junio 2022
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.

Acceda a la cámara web usando Python y OpenCV

Salman Mehmood avatar Salman Mehmood avatar

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