¿Cómo puedo acceder a mi webcam en Python?


Me gustaría acceder a mi webcam desde Python.

Intenté usar la extensión VideoCapture ( tutorial), pero eso no me funcionó muy bien, tuve que solucionar algunos problemas como que es un poco lento con resoluciones >320x230, y a veces devuelve None sin razón aparente.

¿Hay una mejor manera de acceder a mi webcam desde Python?

Author: Martin Tournoij, 2009-03-03

4 answers

OpenCV tiene soporte para obtener datos de una cámara web, y viene con wrappers de Python por defecto, también necesita instalar numpy para que la extensión de Python de OpenCV (llamada cv2) funcione.
En el momento de escribir este artículo (enero de 2015) todavía no hay soporte para Python 3, por lo que necesita usar Python 2.

Más información sobre el uso de OpenCV con Python.

Un ejemplo copiado de Mostrando imágenes de webcam usando opencv y python :

import cv2

cv2.namedWindow("preview")
vc = cv2.VideoCapture(0)

if vc.isOpened(): # try to get the first frame
    rval, frame = vc.read()
else:
    rval = False

while rval:
    cv2.imshow("preview", frame)
    rval, frame = vc.read()
    key = cv2.waitKey(20)
    if key == 27: # exit on ESC
        break
cv2.destroyWindow("preview")
 45
Author: John Montgomery,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:02

Esto debería haber sido un comentario a @John Montgomery, pero mi representante no me permite hacer comentarios. Su respuesta es genial, pero al menos en Windows, le falta la línea

vc.release()

Antes

cv2.destroyWindow("preview")

Sin él, el recurso de la cámara está bloqueado y no se puede capturar de nuevo antes de que se mate la consola de python.

 9
Author: Robert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-19 14:16:11

Gstreamer puede manejar la entrada de la cámara web. Si recuerdo bien, hay enlaces de Python para ello!

 1
Author: Kknd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-03 02:33:17

El único que he usado es VideoCapture, que ya has mencionado que no te gusta (aunque no tuve problemas con él; ¿qué errores encontraste?)

No pude encontrar ninguna alternativa en el pasado o ahora, por lo que podría estar atascado usando VideoCapture, o encontrando una buena biblioteca de C y escribiendo un contenedor de Python para ella (lo que podría ser más trabajo del que está dispuesto a poner en ella).

 -2
Author: Kiv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-03 01:42:08