2009-03-03 21 views
49

Me gustaría acceder a mi cámara web desde Python.¿Cómo accedo a mi cámara web en Python?

He intentado utilizar el VideoCapture extensión (tutorial), pero eso no funcionó muy bien para mí, tenía que evitar algunos problemas, ya que es un poco lento con las resoluciones> 320x230, y, a veces regresa None sin razón aparente.

¿Hay alguna forma mejor de acceder a mi cámara web desde Python?

+0

Aclare qué sistemas operativos debe admitir. –

+0

Vea también: [Biblioteca de Python para tomar imágenes de la cámara] (http://softwarerecs.stackexchange.com/q/18134/1834) –

+0

Y: [¿Por qué las imágenes de la cámara web tomadas con Python son tan oscuras?] (Http: // stackoverflow .com/q/28566972/562769) –

Respuesta

40

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

More information on using OpenCV with Python.

Un ejemplo copiado de Displaying webcam feed using opencv and 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") 
+0

Existe soporte de Python 3 si lo instala desde la rueda. Utilicé este tutorial con éxito: https://www.solarianprogrammer.com/2016/09/17/install-opencv-3-with-python-3-on-windows/ –

-2

El único que he utilizado es VideoCapture, que ya se ha mencionado que no le gusta (aunque he tenido ningún problema con él; lo bichos encontró?)

he podido encontrar cualquier alternativa en el pasado o ahora, por lo que podría estar atascado ya sea con VideoCapture, o encontrar una buena biblioteca de C y escribir un contenedor de Python para ello (que podría ser más trabajo de lo que está dispuesto a poner en él).

+1

Ok, edité la pregunta para definir el problema que encontré. – Rodrigo

1

gstreamer puede manejar la entrada de la cámara web. Si recuerdo bien, ¡hay enlaces de pitón para eso!

+1

'padsp streamer -q -c/dev/video0 -f rgb24 -F estéreo -r 24 -s 1280x720 -t 00:10 -o test.avi' grabará 10 segundos de una cámara web HD con 24 fps y la guardará como * test.avi *. (Tenga en cuenta que padsp solo se utiliza para garantizar que el audio se capture con las versiones más nuevas de Ubuntu). – Pithikos

9

Esto debería haber sido un comentario a @ John Montgomery, pero mi representante no me permita hacer comentarios. Su respuesta es grande, pero al menos en Windows, no se encuentra la línea

vc.release() 

antes

cv2.destroyWindow("preview") 

Sin él, el recurso de la cámara está bloqueada y no puede ser capturado de nuevo antes de la pitón consola es asesinada

Cuestiones relacionadas