class TVDisplay – TV-Shield-Treiber¶
Die Klasse TVDisplay steuert das OpenMV TV Shield an, das einen RGB565-Framebuffer in ein NTSC-Composite-Videosignal (352x240, 60 Halbbilder/s, interlaced) umwandelt, das für jeden Fernseher oder analogen Videomonitor geeignet ist.
Zwei Shield-Varianten werden unterstützt:
Das verkabelte TV Shield, das das Composite-Signal über eine einzelne Cinch-Buchse bereitstellt.
Das Wireless TV Shield, das dasselbe Signal in einen analogen 2,4-GHz-Videosender einspeist. Der Empfängerkanal (1–8) wird zur Laufzeit über
ioctl()mitdisplay.IOCTL_CHANNELausgewählt; bis dieser Aufruf erfolgt ist, ist kein Kanal ausgewählt.
Auflösung und Framing sind fest – TVDisplay nimmt kein framesize-Argument entgegen. Einzelbilder werden präsentiert, indem ein image.Image an write() übergeben wird, das Skalierung, ROI, Palette und Ausrichtungstransformationen intern verarbeitet.
Anwendungsbeispiel:
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())
Konstruktoren¶
- class display.TVDisplay(triple_buffer: bool = True)¶
triple_bufferWenn True, werden Aktualisierungen des Bildschirms nicht-blockierend, auf Kosten des 3-fachen der Displaygröße im RAM. Der Standardwert ist boardabhängig.- deinit() None¶
Gibt die von der Klasse verwendeten I/O-Pins und den RAM frei. Dies wird bei der Zerstörung automatisch aufgerufen.
- 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¶
Zeigt ein
imagean, dessen obere linke Ecke an der Position x, y beginnt.x_scalesteuert, wie stark das angezeigte Bild in x-Richtung skaliert wird (Float). Ist dieser Wert negativ, wird das Bild horizontal gespiegelt.y_scalesteuert, wie stark das angezeigte Bild in y-Richtung skaliert wird (Float). Ist dieser Wert negativ, wird das Bild vertikal gespiegelt.roiist das Interessensbereich-Rechteck-Tupel (x, y, w, h) des anzuzeigenden Bilds.rgb_channelist der RGB-Kanal (0=R, G=1, B=2), der aus einem RGB565-Bild extrahiert und auf dem Display dargestellt wird.alphasteuert, wie undurchsichtig das Bild ist. Ein Wert von 256 zeigt ein undurchsichtiges Bild an, während ein Wert unter 256 ein schwarzes, transparentes Bild erzeugt. 0 ergibt ein vollständig schwarzes Bild.color_palettekann, wenn nicht-1, ein Farbpaletten-Enum oder ein RGB565-Bild mit insgesamt 256 Pixeln sein, das als Farb-Lookup-Tabelle auf den Graustufenwert des Eingabebilds verwendet wird.alpha_palettekann, wenn nicht-1, ein GRAYSCALE-Bild mit insgesamt 256 Pixeln sein, das als Alpha-Palette verwendet wird und denalpha-Wert des Eingabebilds auf Pixelebene moduliert.hintlogische ODER-Verknüpfung der Flags:image.AREA: Flächenskalierung beim Herunterskalieren verwenden.image.BILINEAR: Bilineare Skalierung verwenden.image.BICUBIC: Bikubische Skalierung verwenden.image.CENTER: Das Bild auf dem Display zentrieren (nach der Skalierung).image.HMIRROR: Das Bild horizontal spiegeln.image.VFLIP: Das Bild vertikal spiegeln.image.TRANSPOSE: Das Bild transponieren (x/y vertauschen).image.EXTRACT_RGB_CHANNEL_FIRST:rgb_channel-Extraktion vor der Skalierung anwenden.image.APPLY_COLOR_PALETTE_FIRST:color_palettevor der Skalierung anwenden.image.SCALE_ASPECT_KEEP: Skalieren, um in das Display einzupassen.image.SCALE_ASPECT_EXPAND: Skalieren, um das Display zu füllen (mit Beschneidung).image.SCALE_ASPECT_IGNORE: Skalieren, um das Display zu füllen (mit Verzerrung).image.ROTATE_90: Um 90 Grad drehen (VFLIP | TRANSPOSE).image.ROTATE_180: Um 180 Grad drehen (HMIRROR | VFLIP).image.ROTATE_270: Um 270 Grad drehen (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Löscht den Bildschirm auf Schwarz.
display_offwird aus Gründen der API-Kompatibilität mit anderen Displayklassen akzeptiert und ignoriert.
- ioctl(cmd: int, *args) object¶
Generischer ioctl-Einstiegspunkt.
Übergeben Sie
display.IOCTL_CHANNELalscmd, um den Sendekanal des Wireless TV Shields festzulegen oder abzurufen. Mit einem zweiten Argument (1-8) wird der Kanal festgelegt; ohne zweites Argument wird der aktuelle Kanal zurückgegeben. Bis zum ersten Set-Aufruf ist kein Kanal ausgewählt.