class TVDisplay – TV Shield-drivrutin

Klassen TVDisplay driver OpenMV TV Shield, som konverterar en RGB565-bildbuffert till en NTSC-kompositvideosignal (352x240, 60 fält/s sammanflätad) lämplig för vilken TV eller analog videomonitor som helst.

Två shield-varianter stöds:

  • Den trådbundna TV Shield, som exponerar kompositsignalen på ett enda RCA-uttag.

  • Den trådlösa TV Shield, som matar samma signal till en 2,4 GHz analog videosändare. Mottagarkanalen (1–8) väljs vid körning via ioctl() med display.IOCTL_CHANNEL; tills detta anrop görs väljs ingen kanal.

Upplösning och inramning är fasta – TVDisplay tar inte något framesize-argument. Bildrutor presenteras genom att skicka en image.Image till write(), som hanterar skalning, ROI, palett- och orienteringstransformeringar internt.

Exempel på användning:

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

Konstruktorer

class display.TVDisplay(triple_buffer: bool = True)

triple_buffer Om True görs uppdateringar av skärmen icke-blockerande till priset av 3X skärmstorleken i RAM. Standardvärdet är kortberoende.

deinit() None

Frigör de I/O-stift och det RAM som klassen använder. Detta anropas automatiskt vid destruktion.

width() int

Returnerar skärmens bredd (352).

height() int

Returnerar skärmens höjd (240).

refresh() int

Returnerar uppdateringsfrekvensen (60).

triple_buffer() bool

Returnerar om trippelbuffring är aktiverad.

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

Visar en image vars övre vänstra hörn börjar vid platsen x, y.

x_scale styr hur mycket den visade bilden skalas i x-riktningen (flyttal). Om detta värde är negativt vänds bilden horisontellt.

y_scale styr hur mycket den visade bilden skalas i y-riktningen (flyttal). Om detta värde är negativt vänds bilden vertikalt.

roi är intresseområdets rektangeltupel (x, y, w, h) för bilden som ska visas.

rgb_channel är den RGB-kanal (0=R, G=1, B=2) som ska extraheras från en RGB565-bild och renderas på skärmen.

alpha styr hur ogenomskinlig bilden är. Värdet 256 visar en ogenomskinlig bild medan ett värde lägre än 256 ger en svart transparent bild. 0 ger en helt svart bild.

color_palette om inte -1 kan vara en färgpalettenum eller en RGB565-bild med totalt 256 pixlar att använda som en färguppslagstabell på gråskalevärdet av indatabilden.

alpha_palette om inte -1 kan vara en GRAYSCALE-bild med totalt 256 pixlar att använda som en alfapalett vilken modulerar alpha-värdet av indatabilden på pixelnivå.

hint logisk OR av flaggorna:

clear(display_off: bool = False) None

Rensar skärmen till svart.

display_off accepteras för API-kompatibilitet med andra skärmklasser och ignoreras.

ioctl(cmd: int, *args) object

Generisk ioctl-ingångspunkt.

Skicka display.IOCTL_CHANNEL som cmd för att ställa in eller hämta sändningskanalen för den trådlösa TV-shielden. Med ett andra argument (1-8) ställs kanalen in; utan ett andra argument returneras den aktuella kanalen. Ingen kanal väljs förrän det första inställningsanropet görs.