pygame.camera
pygame module for camera use
Module init
Get the backends supported on this system
Surface colorspace conversion
returns a list of available cameras
load a camera

Actualmente, Pygame soporta cámaras nativas de Linux (V4L2) y Windows (MSMF), con un soporte de plataforma más amplio disponible a través de un backend (controlador) integrado en OpenCV.

New in pygame 2.0.2: Windows native camera support

New in pygame 2.0.3: New OpenCV backends

¡EXPERIMENTAL!: Este API puede cambiar o desaparecer en lanzamientos posteriores de pygame. Si lo utilizas, es muy probable que tu código se rompa en la próxima versión de pygame.

La función de Bayer a RGB se basa en:

Sonix SN9C101 based webcam basic I/F routines
Copyright (C) 2004 Takafumi Mizuno <taka-qce@ls-a.jp>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

Nuevo en pygame 1.9.0.

pygame.camera.init()
Module init
init(backend = None) -> None

Esta función inicia el módulo de la cámara, seleccionando el mejor controlador (backend) de la cámara web que pueda encontrar en tu sistema. No se garantiza que tenga éxito e incluso puede intentar importar módulos de teceros, como OpenCV. Si deseas anular la elección de controlador (backend), podés hacer un llamado para pasar el nombre del controlador que deseas a esta función. Podés obtener más información sobre los controladores (backends) en la función get_backends().

Changed in pygame 2.0.3: Option to explicitly select backend

pygame.camera.get_backends()
Get the backends supported on this system
get_backends() -> [str]

Este función devuelve cada controlador (backend) que considera que tienen posibilidad de funcionar en tu sistema, en orden de prioridad.

pygame.camera Backends:

Backend           OS        Description
---------------------------------------------------------------------------------
_camera (MSMF)    Windows   Builtin, works on Windows 8+ Python3
_camera (V4L2)    Linux     Builtin
OpenCV            Any       Uses `opencv-python` module, can't enumerate cameras
OpenCV-Mac        Mac       Same as OpenCV, but has camera enumeration
VideoCapture      Windows   Uses abandoned `VideoCapture` module, can't enumerate
                            cameras, may be removed in the future

Hay dos diferencias princiales entre los controladores (backends).

Los controladores (backends) _camera están integrados en el mismo pygame y no requieren importaciones de terceros. Todos los demás controlaores sí lo requieren. Para los controladores OpenCV y VideoCapture, esos módulos deben estar instalados en tu sistema.

La otra gran diferencia es "enumeración de cámaras". Algunos constroladores no tienen una forma de enumerar los nombres de las cámaras o incluso la cantidad de cámaras en el sistema. En estos casos, la función list_cameras() devolverá algo como [0]. Si sabés que tenés varias cámaras en el sistema, estos puertos de controladores pasarán un "número de índice de cámara" si lo utilizas como el parámetro device.

New in pygame 2.0.3.

pygame.camera.colorspace()
Surface colorspace conversion
colorspace(Surface, format, DestSurface = None) -> Surface

Permite la conversión "RGB" a un espacio de color destino de "HSV" o "YUV". Las surfaces (superficies) de origen y destino deben tener el mismo tamaño y profundidad de píxel. Esto es útil para la visión por computadora de dispositivos con capacidad de procesamiento limitada. Captura una imagen lo más pequeña posible, la redimensiona con transform.scale() haciendola aún más pequeña, y luego convierte el espacio de color a "YUV" o "HSV" antes de realizar cualquier procesamiento en ella.

pygame.camera.list_cameras()
returns a list of available cameras
list_cameras() -> [cameras]

Verifica la disponibilidad de cámaras y devuelve una lista de cadenas de nombres de cámaras, listas para ser utilizados por pygame.camera.Cameraload a camera.

Si el controlador (backend) de la cámara no soporta la enuemración de webcams, esto devolverá algo como [0]. Ver get_backends() para obtener mucha más información.

pygame.camera.Camera
load a camera
Camera(device, (width, height), format) -> Camera
opens, initializes, and starts capturing
stops, uninitializes, and closes the camera
gets current values of user controls
changes camera settings if supported by the camera
returns the dimensions of the images being recorded
checks if a frame is ready
captures an image as a Surface
returns an unmodified image as bytes

Carga una cámara. En Linux, el dispositivo suele ser algo como "/dev/video0". El ancho y alto predeterminados son 640x480. El formato es el espacio de color deseado para la salida. Esto es útil para fines de visión por computadora. El valor predeterminado es RGB. Los siguientes formatos son compatibles:

  • RGB - Red, Green, Blue

  • YUV - Luma, Blue Chrominance, Red Chrominance

  • HSV - Hue, Saturation, Value

start()
opens, initializes, and starts capturing
start() -> None

Abre el dispositivo de la cámara, intenta inicializarlo y comienza a grabar imágenes en un búfer. La cámara debe estar iniciada antes de que se puedan utilizar las siguientes funciones.

stop()
stops, uninitializes, and closes the camera
stop() -> None

Detiene la grabación, desinicializa la cámara y la cierra. Una vez que la cámara se detiene, las funciones siguientes no se pueden utilizar hasta que se inicie nuevamente.

get_controls()
gets current values of user controls
get_controls() -> (hflip = bool, vflip = bool, brightness)

Si la cámara lo admite, get_controls devolverá la configuración actual para el volteo horizontal y vertical de la imagen como booleanos y el brillo como un número entero. Si no es compatible, devolverá los valores predeterminados (0, 0, 0). Hay que tener en cuenta que los valores de retorno acá pueden ser diferentes a los devueltos por set_controls, aunque es más probable que sean correctos.

set_controls()
changes camera settings if supported by the camera
set_controls(hflip = bool, vflip = bool, brightness) -> (hflip = bool, vflip = bool, brightness)

Te permite cambiar la configuración de la cámara si la cámara lo admite. Los valores devueltos serán los valores de la entrada si la cámara afirma que tuvo éxito, o si no, los valores previamente utilizados. Cada argumento es opcional y se puede elegir el deseado mediante el suministro de una palabra clave, como hflip. Hay que tener en cuenta que la configuración real siendo utilizada por la cámara puede no ser la misma que la devuelta por set_controls. En Windows hflip y vflip están implementados por pygame, no por la cámara, por lo que siempre deberían funcionar, pero el brillo brightness no está soportado.

get_size()
returns the dimensions of the images being recorded
get_size() -> (width, height)

Devuelve las dimensiones actuales de las imágenes capturadas por la cámara. Esto devolverá el tamaño real, que puede ser diferente al especificado durante la inicialización si la cámara no admite ese tamaño.

query_image()
checks if a frame is ready
query_image() -> bool

Si una imagen está lista, devuelve TRUE (verdadero). De lo contrario, devuelve FALSE (falso). Hay que tener en cuenta que algunas webcams siempre devolverán falso y solo pondrán en cola un cuadro cuando se les llame con una función de bloqueo como get_image(). En Windows (MSMF), y en los backends de OpenCV, la función query_image() debería ser confiable. Esto es útil para separar la frecuencia de cuadros del juego de la velocidad de la cámara sin tener que usar subprocesos.

get_image()
captures an image as a Surface
get_image(Surface = None) -> Surface

Extrae una imagen del búfer como una superficie RGB. Opcionalmente, se puede reutilizar una superficie existente para ahorrar tiempo. La profundidad de bits de la superficie es de 24 bits en Linux, 32 bits en Windows, o la misma que la superficie suministrada opcionalmente.

get_raw()
returns an unmodified image as bytes
get_raw() -> bytes

Obtiene una imagen de la cámara como una cadena en el formato de píxel nativo de la cámara. Útil para la integración con las otras bibliotecas. Esto devuelve un objeto de bytes.




Edit on GitHub