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()sdisplay.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_bufferAko 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.
- 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_scalekontrolira koliko se prikazana slika skalira u smjeru x (broj s pomičnim zarezom). Ako je ova vrijednost negativna, slika će se vodoravno preokrenuti.y_scalekontrolira koliko se prikazana slika skalira u smjeru y (broj s pomičnim zarezom). Ako je ova vrijednost negativna, slika će se okomito preokrenuti.roije n-torka pravokutnika područja interesa (x, y, w, h) slike za prikaz.rgb_channelje RGB kanal (0=R, G=1, B=2) koji se izdvaja iz RGB565 slike i prikazuje na zaslonu.alphakontrolira 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_paletteako nije-1mož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_paletteako nije-1može biti slika GRAYSCALE od ukupno 256 piksela koja se koristi kao alfa paleta koja moduliraalphavrijednost ulazne slike na razini pojedinog piksela.hintlogičko ILI zastavica:image.AREA: Koristi skaliranje područja pri smanjivanju.image.BILINEAR: Koristi bilinearno skaliranje.image.BICUBIC: Koristi bikubično skaliranje.image.CENTER: Centrira sliku na zaslonu (nakon skaliranja).image.HMIRROR: Vodoravno zrcali sliku.image.VFLIP: Okomito preokreće sliku.image.TRANSPOSE: Transponira sliku (zamjenjuje x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Primjenjuje izdvajanjergb_channelprije skaliranja.image.APPLY_COLOR_PALETTE_FIRST: Primjenjujecolor_paletteprije skaliranja.image.SCALE_ASPECT_KEEP: Skalira da stane unutar zaslona.image.SCALE_ASPECT_EXPAND: Skalira da ispuni zaslon (obrezivanje).image.SCALE_ASPECT_IGNORE: Skalira da ispuni zaslon (rastezanje).image.ROTATE_90: Rotira za 90 stupnjeva (VFLIP | TRANSPOSE).image.ROTATE_180: Rotira za 180 stupnjeva (HMIRROR | VFLIP).image.ROTATE_270: Rotira za 270 stupnjeva (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Briše zaslon na crno.
display_offprihvać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_CHANNELkaocmdza 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.