class TVDisplay – Pilote du TV Shield

La classe TVDisplay pilote l’OpenMV TV Shield, qui convertit un tampon d’image RGB565 en un signal vidéo composite NTSC (352x240, 60 trames/s entrelacées) adapté à n’importe quel téléviseur ou moniteur vidéo analogique.

Deux variantes de shield sont prises en charge :

  • Le TV Shield filaire, qui expose le signal composite sur une seule prise RCA.

  • Le Wireless TV Shield, qui transmet le même signal à un émetteur vidéo analogique 2,4 GHz. Le canal du récepteur (1–8) est sélectionné à l’exécution via ioctl() avec display.IOCTL_CHANNEL ; tant que cet appel n’est pas effectué, aucun canal n’est sélectionné.

La résolution et le cadrage sont fixes – TVDisplay ne prend pas d’argument framesize. Les trames sont présentées en passant une image.Image à write(), qui gère en interne la mise à l’échelle, le ROI, la palette et les transformations d’orientation.

Exemple d’utilisation

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())

Constructeurs

class display.TVDisplay(triple_buffer: bool = True)

triple_buffer Si True, rend les mises à jour de l’écran non bloquantes au prix de 3X la taille de l’affichage en RAM. La valeur par défaut dépend de la carte.

deinit() None

Libère les broches d’E/S et la RAM utilisées par la classe. Ceci est appelé automatiquement à la destruction.

width() int

Renvoie la largeur de l’écran (352).

height() int

Renvoie la hauteur de l’écran (240).

refresh() int

Renvoie la fréquence de rafraîchissement (60).

triple_buffer() bool

Indique si le triple tamponnage est activé.

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

Affiche une image dont le coin supérieur gauche commence à l’emplacement x, y.

x_scale contrôle le facteur de mise à l’échelle de l’image affichée dans la direction x (flottant). Si cette valeur est négative, l’image sera retournée horizontalement.

y_scale contrôle le facteur de mise à l’échelle de l’image affichée dans la direction y (flottant). Si cette valeur est négative, l’image sera retournée verticalement.

roi est le tuple rectangle de la région d’intérêt (x, y, w, h) de l’image à afficher.

rgb_channel est le canal RGB (0=R, G=1, B=2) à extraire d’une image RGB565 et à rendre sur l’affichage.

alpha contrôle l’opacité de l’image. Une valeur de 256 affiche une image opaque, tandis qu’une valeur inférieure à 256 produit une image noire transparente. 0 donne une image parfaitement noire.

color_palette si elle n’est pas -1 peut être une énumération de palette de couleurs ou une image RGB565 de 256 pixels au total à utiliser comme table de correspondance de couleurs sur la valeur en niveaux de gris de l’image d’entrée.

alpha_palette si elle n’est pas -1 peut être une image GRAYSCALE de 256 pixels au total à utiliser comme palette alpha qui module la valeur alpha de l’image d’entrée au niveau de chaque pixel.

hint OU logique des indicateurs :

clear(display_off: bool = False) None

Efface l’écran en noir.

display_off est accepté pour la compatibilité d’API avec les autres classes d’affichage et est ignoré.

ioctl(cmd: int, *args) object

Point d’entrée ioctl générique.

Passez display.IOCTL_CHANNEL comme cmd pour définir ou récupérer le canal de diffusion du wireless TV shield. Avec un second argument (1-8), le canal est défini ; sans second argument, le canal actuel est renvoyé. Aucun canal n’est sélectionné tant que le premier appel de définition n’est pas effectué.