##### pygame documentation

Pygame Home || Help Contents || Reference Index

Most useful stuff: Color

Advanced stuff: cursors | BufferProxy

Other: camera

`pygame.camera`
  pygame module for camera use

  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.Camera` load 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

    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