klasa TVDisplay – upravljački program za TV Shield

Klasa TVDisplay upravlja OpenMV TV Shieldom, koji pretvara RGB565 međuspremnik slike u NTSC kompozitni video signal (352x240, 60 polja/s prepleteno) prikladan za bilo koji televizor ili analogni video monitor.

Podržane su dvije varijante shielda:

  • Žičani TV Shield, koji izlaže kompozitni signal na jednom RCA priključku.

  • Wireless TV Shield, koji isti signal dovodi u 2,4 GHz analogni video odašiljač. Kanal prijemnika (1–8) odabire se tijekom izvođenja putem ioctl() s display.IOCTL_CHANNEL; dok se taj poziv ne izvrši, nijedan kanal nije odabran.

Razlučivost i kadriranje su fiksni – TVDisplay ne prima argument framesize. Sličice se prikazuju prosljeđivanjem image.Image metodi write(), koja interno obrađuje skaliranje, ROI, paletu i transformacije orijentacije.

Primjer upotrebe:

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

Konstruktori

class display.TVDisplay(triple_buffer: bool = True)

triple_buffer Ako je True, čini ažuriranja zaslona neblokirajućima po cijenu 3X veličine zaslona u RAM-u. Zadano ovisi o ploči.

deinit() None

Oslobađa I/O pinove i RAM koje koristi klasa. Ovo se automatski poziva pri uništavanju.

width() int

Vraća širinu zaslona (352).

height() int

Vraća visinu zaslona (240).

refresh() int

Vraća brzinu osvježavanja (60).

triple_buffer() bool

Vraća je li omogućeno trostruko međuspremanje.

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

Prikazuje image čiji gornji lijevi kut počinje na lokaciji x, y.

x_scale kontrolira koliko se prikazana slika skalira u smjeru x (broj s pomičnim zarezom). Ako je ova vrijednost negativna, slika će se vodoravno preokrenuti.

y_scale kontrolira koliko se prikazana slika skalira u smjeru y (broj s pomičnim zarezom). Ako je ova vrijednost negativna, slika će se okomito preokrenuti.

roi je n-torka pravokutnika područja interesa (x, y, w, h) slike za prikaz.

rgb_channel je RGB kanal (0=R, G=1, B=2) koji se izdvaja iz RGB565 slike i prikazuje na zaslonu.

alpha kontrolira koliko je slika neprozirna. Vrijednost 256 prikazuje neprozirnu sliku dok vrijednost niža od 256 proizvodi crnu prozirnu sliku. 0 rezultira savršeno crnom slikom.

color_palette ako nije -1 može biti enum palete boja ili slika RGB565 od ukupno 256 piksela koja se koristi kao tablica za traženje boja na vrijednosti ulazne slike u sivim tonovima.

alpha_palette ako nije -1 može biti slika GRAYSCALE od ukupno 256 piksela koja se koristi kao alfa paleta koja modulira alpha vrijednost ulazne slike na razini pojedinog piksela.

hint logičko ILI zastavica:

clear(display_off: bool = False) None

Briše zaslon na crno.

display_off prihvaća se radi API kompatibilnosti s drugim klasama zaslona i zanemaruje se.

ioctl(cmd: int, *args) object

Generička ioctl ulazna točka.

Proslijedite display.IOCTL_CHANNEL kao cmd za postavljanje ili dohvaćanje kanala emitiranja bežičnog TV shielda. S drugim argumentom (1-8) kanal se postavlja; bez drugog argumenta vraća se trenutni kanal. Nijedan kanal nije odabran dok se ne izvrši prvi poziv za postavljanje.