clase TVDisplay – Controlador del TV Shield#

La clase TVDisplay controla el OpenMV TV Shield, que convierte un framebuffer RGB565 en una señal de vídeo compuesto NTSC (352x240, 60 campos/s entrelazados) apta para cualquier televisor o monitor de vídeo analógico.

Se admiten dos variantes del shield:

  • El TV Shield con cable, que expone la señal compuesta en un único conector RCA.

  • El Wireless TV Shield, que envía la misma señal a un transmisor de vídeo analógico de 2,4 GHz. El canal del receptor (1–8) se selecciona en tiempo de ejecución mediante ioctl() con display.IOCTL_CHANNEL; hasta que se realice esa llamada no hay ningún canal seleccionado.

La resolución y el encuadre son fijos – TVDisplay no recibe un argumento framesize. Los fotogramas se presentan pasando una image.Image a write(), que gestiona internamente el escalado, la ROI, la paleta y las transformaciones de orientación.

Ejemplo de uso:

import csi
import display

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.SIF)              # 352x240, matches the TV output

tv = display.TVDisplay()

while True:
    tv.write(csi0.snapshot())

Constructores#

class display.TVDisplay(triple_buffer: bool = True)#

triple_buffer Si es True, hace que las actualizaciones de la pantalla no sean bloqueantes a costa de 3 veces el tamaño de la pantalla en RAM. El valor predeterminado depende de la placa.

deinit() None#

Libera los pines de E/S y la RAM utilizados por la clase. Esto se llama automáticamente al destruir el objeto.

width() int#

Devuelve el ancho de la pantalla (352).

height() int#

Devuelve el alto de la pantalla (240).

refresh() int#

Devuelve la frecuencia de actualización (60).

triple_buffer() bool#

Devuelve si el triple búfer está habilitado.

write(image: image.Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 256, color_palette: int | 'image.Image' | None = None, alpha_palette: 'image.Image' | None = None, hint: int = 0) None#

Muestra una image cuya esquina superior izquierda comienza en la ubicación x, y.

x_scale controla cuánto se escala la imagen mostrada en la dirección x (float). Si este valor es negativo, la imagen se voltea horizontalmente.

y_scale controla cuánto se escala la imagen mostrada en la dirección y (float). Si este valor es negativo, la imagen se voltea verticalmente.

roi es la tupla del rectángulo de la región de interés (x, y, w, h) de la imagen que se va a mostrar.

rgb_channel es el canal RGB (0=R, G=1, B=2) que se extrae de una imagen RGB565 y se representa en la pantalla.

alpha controla cuán opaca es la imagen. Un valor de 256 muestra una imagen opaca, mientras que un valor inferior a 256 produce una imagen negra transparente. 0 da como resultado una imagen perfectamente negra.

color_palette si no es -1 puede ser un enum de paleta de colores o una imagen RGB565 de 256 píxeles en total para usar como tabla de búsqueda de color sobre el valor en escala de grises de la imagen de entrada.

alpha_palette si no es -1 puede ser una imagen GRAYSCALE de 256 píxeles en total para usar como paleta alfa que modula el valor alpha de la imagen de entrada a nivel de píxel.

hint OR lógico de las banderas:

clear(display_off: bool = False) None#

Borra la pantalla a negro.

display_off se acepta por compatibilidad de API con otras clases de pantalla y se ignora.

ioctl(cmd: int, *args) object#

Punto de entrada genérico ioctl.

Pase display.IOCTL_CHANNEL como cmd para establecer u obtener el canal de difusión del wireless TV shield. Con un segundo argumento (1-8) se establece el canal; sin segundo argumento se devuelve el canal actual. No se selecciona ningún canal hasta que se realice la primera llamada de establecimiento.