class TVDisplay – Driver per TV Shield¶
La classe TVDisplay pilota la OpenMV TV Shield, che converte un framebuffer RGB565 in un segnale video composito NTSC (352x240, 60 campi/s interlacciato) adatto a qualsiasi televisore o monitor video analogico.
Sono supportate due varianti di shield:
La TV Shield cablata, che espone il segnale composito su un singolo jack RCA.
La Wireless TV Shield, che invia lo stesso segnale a un trasmettitore video analogico a 2,4 GHz. Il canale del ricevitore (1–8) viene selezionato a runtime tramite
ioctl()condisplay.IOCTL_CHANNEL; finché tale chiamata non viene effettuata, non viene selezionato alcun canale.
La risoluzione e la formattazione dei frame sono fisse – TVDisplay non accetta un argomento framesize. I frame vengono presentati passando un image.Image a write(), che gestisce internamente le trasformazioni di scaling, ROI, palette e orientamento.
Esempio di utilizzo:
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())
Costruttori¶
- class display.TVDisplay(triple_buffer: bool = True)¶
triple_bufferSe True rende gli aggiornamenti dello schermo non bloccanti al costo di 3 volte la dimensione del display in RAM. Il valore predefinito dipende dalla scheda.- deinit() None¶
Rilascia i pin di I/O e la RAM utilizzati dalla classe. Viene chiamato automaticamente alla distruzione.
- 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¶
Visualizza un”
imageil cui angolo in alto a sinistra parte dalla posizione x, y.x_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione x (float). Se questo valore è negativo l’immagine verrà capovolta orizzontalmente.y_scalecontrolla di quanto l’immagine visualizzata viene scalata nella direzione y (float). Se questo valore è negativo l’immagine verrà capovolta verticalmente.roiè la tupla del rettangolo della regione di interesse (x, y, w, h) dell’immagine da visualizzare.rgb_channelè il canale RGB (0=R, G=1, B=2) da estrarre da un’immagine RGB565 e da visualizzare sul display.alphacontrolla quanto è opaca l’immagine. Un valore di 256 visualizza un’immagine opaca mentre un valore inferiore a 256 produce un’immagine nera trasparente. 0 produce un’immagine perfettamente nera.color_palettese diverso da-1può essere un enum di palette di colori o un’immagine RGB565 di 256 pixel totali da utilizzare come tabella di lookup dei colori sul valore in scala di grigi dell’immagine di input.alpha_palettese diverso da-1può essere un’immagine GRAYSCALE di 256 pixel totali da utilizzare come palette alpha che modula il valorealphadell’immagine di input a livello di singolo pixel.hintOR logico dei flag:image.AREA: Utilizza lo scaling per area durante la riduzione.image.BILINEAR: Utilizza lo scaling bilineare.image.BICUBIC: Utilizza lo scaling bicubico.image.CENTER: Centra l’immagine sul display (dopo lo scaling).image.HMIRROR: Esegue il mirroring orizzontale dell’immagine.image.VFLIP: Capovolge verticalmente l’immagine.image.TRANSPOSE: Traspone l’immagine (scambio x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Applica l’estrazione dirgb_channelprima dello scaling.image.APPLY_COLOR_PALETTE_FIRST: Applicacolor_paletteprima dello scaling.image.SCALE_ASPECT_KEEP: Scala per adattarsi all’interno del display.image.SCALE_ASPECT_EXPAND: Scala per riempire il display (ritagliando).image.SCALE_ASPECT_IGNORE: Scala per riempire il display (allungando).image.ROTATE_90: Ruota di 90 gradi (VFLIP | TRANSPOSE).image.ROTATE_180: Ruota di 180 gradi (HMIRROR | VFLIP).image.ROTATE_270: Ruota di 270 gradi (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Azzera lo schermo portandolo al nero.
display_offè accettato per compatibilità API con altre classi di display e viene ignorato.
- ioctl(cmd: int, *args) object¶
Punto di ingresso ioctl generico.
Passa
display.IOCTL_CHANNELcomecmdper impostare o ottenere il canale di trasmissione della wireless TV shield. Con un secondo argomento (1-8) il canale viene impostato; senza secondo argomento viene restituito il canale corrente. Nessun canale viene selezionato finché non viene effettuata la prima chiamata di impostazione.