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()condisplay.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_bufferSi 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.
- 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
imagecuya esquina superior izquierda comienza en la ubicación x, y.x_scalecontrola cuánto se escala la imagen mostrada en la dirección x (float). Si este valor es negativo, la imagen se voltea horizontalmente.y_scalecontrola cuánto se escala la imagen mostrada en la dirección y (float). Si este valor es negativo, la imagen se voltea verticalmente.roies 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_channeles el canal RGB (0=R, G=1, B=2) que se extrae de una imagen RGB565 y se representa en la pantalla.alphacontrola 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_palettesi no es-1puede 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_palettesi no es-1puede ser una imagen GRAYSCALE de 256 píxeles en total para usar como paleta alfa que modula el valoralphade la imagen de entrada a nivel de píxel.hintOR lógico de las banderas:image.AREA: Usa escalado por área al reducir el tamaño.image.BILINEAR: Usa escalado bilineal.image.BICUBIC: Usa escalado bicúbico.image.CENTER: Centra la imagen en la pantalla (después del escalado).image.HMIRROR: Refleja horizontalmente la imagen.image.VFLIP: Voltea verticalmente la imagen.image.TRANSPOSE: Transpone la imagen (intercambia x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Aplica la extracción dergb_channelantes del escalado.image.APPLY_COLOR_PALETTE_FIRST: Aplicacolor_paletteantes del escalado.image.SCALE_ASPECT_KEEP: Escala para ajustar dentro de la pantalla.image.SCALE_ASPECT_EXPAND: Escala para rellenar la pantalla (recortando).image.SCALE_ASPECT_IGNORE: Escala para rellenar la pantalla (estirando).image.ROTATE_90: Rota 90 grados (VFLIP | TRANSPOSE).image.ROTATE_180: Rota 180 grados (HMIRROR | VFLIP).image.ROTATE_270: Rota 270 grados (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Borra la pantalla a negro.
display_offse 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_CHANNELcomocmdpara 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.