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()avecdisplay.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_bufferSi 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.
- 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
imagedont le coin supérieur gauche commence à l’emplacement x, y.x_scalecontrô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_scalecontrô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.roiest le tuple rectangle de la région d’intérêt (x, y, w, h) de l’image à afficher.rgb_channelest le canal RGB (0=R, G=1, B=2) à extraire d’une image RGB565 et à rendre sur l’affichage.alphacontrô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_palettesi elle n’est pas-1peut ê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_palettesi elle n’est pas-1peut être une image GRAYSCALE de 256 pixels au total à utiliser comme palette alpha qui module la valeuralphade l’image d’entrée au niveau de chaque pixel.hintOU logique des indicateurs :image.AREA: Utilise la mise à l’échelle par surface lors de la réduction.image.BILINEAR: Utilise la mise à l’échelle bilinéaire.image.BICUBIC: Utilise la mise à l’échelle bicubique.image.CENTER: Centre l’image sur l’affichage (après mise à l’échelle).image.HMIRROR: Effectue un miroir horizontal de l’image.image.VFLIP: Retourne verticalement l’image.image.TRANSPOSE: Transpose l’image (échange x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Applique l’extraction dergb_channelavant la mise à l’échelle.image.APPLY_COLOR_PALETTE_FIRST: Appliquecolor_paletteavant la mise à l’échelle.image.SCALE_ASPECT_KEEP: Met à l’échelle pour ajuster à l’intérieur de l’affichage.image.SCALE_ASPECT_EXPAND: Met à l’échelle pour remplir l’affichage (avec rognage).image.SCALE_ASPECT_IGNORE: Met à l’échelle pour remplir l’affichage (avec étirement).image.ROTATE_90: Rotation de 90 degrés (VFLIP | TRANSPOSE).image.ROTATE_180: Rotation de 180 degrés (HMIRROR | VFLIP).image.ROTATE_270: Rotation de 270 degrés (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Efface l’écran en noir.
display_offest 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_CHANNELcommecmdpour 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é.