klasse TVDisplay – TV Shield-stuurprogramma¶
De TVDisplay-klasse stuurt het OpenMV TV Shield aan, dat een RGB565-framebuffer omzet in een NTSC-composietvideosignaal (352x240, 60 velden/s geïnterlinieerd) dat geschikt is voor elke televisie of analoge videomonitor.
Er worden twee shield-varianten ondersteund:
Het bedrade TV Shield, dat het composietsignaal beschikbaar stelt op één enkele RCA-aansluiting.
Het Wireless TV Shield, dat hetzelfde signaal voedt naar een analoge 2,4 GHz-videozender. Het ontvangerkanaal (1–8) wordt tijdens runtime geselecteerd via
ioctl()metdisplay.IOCTL_CHANNEL; tot die aanroep wordt gedaan is er geen kanaal geselecteerd.
Resolutie en framing liggen vast – TVDisplay neemt geen framesize-argument. Frames worden gepresenteerd door een image.Image door te geven aan write(), die intern het schalen, ROI, palet en oriëntatietransformaties afhandelt.
Voorbeeldgebruik:
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())
Constructors¶
- class display.TVDisplay(triple_buffer: bool = True)¶
triple_bufferIndien True maakt dit updates van het scherm niet-blokkerend, ten koste van 3x de displaygrootte in RAM. De standaardwaarde is bordafhankelijk.- deinit() None¶
Geeft de I/O-pinnen en het RAM vrij die door de klasse worden gebruikt. Dit wordt automatisch aangeroepen bij vernietiging.
- 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¶
Geeft een
imageweer waarvan de linkerbovenhoek begint op locatie x, y.x_scalebepaalt hoeveel de weergegeven afbeelding in de x-richting wordt geschaald (float). Als deze waarde negatief is, wordt de afbeelding horizontaal gespiegeld.y_scalebepaalt hoeveel de weergegeven afbeelding in de y-richting wordt geschaald (float). Als deze waarde negatief is, wordt de afbeelding verticaal gespiegeld.roiis de tuple (x, y, w, h) van het aandachtsgebied-rechthoek van de afbeelding die weergegeven moet worden.rgb_channelis het RGB-kanaal (0=R, G=1, B=2) dat uit een RGB565-afbeelding moet worden geëxtraheerd en op het display moet worden weergegeven.alphabepaalt hoe ondoorzichtig de afbeelding is. Een waarde van 256 geeft een ondoorzichtige afbeelding weer, terwijl een waarde lager dan 256 een zwart transparante afbeelding oplevert. 0 resulteert in een volledig zwarte afbeelding.color_palettekan, indien niet-1, een kleurenpalet-enum zijn of een RGB565-afbeelding van in totaal 256 pixels die als kleuropzoektabel op de grijswaarde van de invoerafbeelding wordt gebruikt.alpha_palettekan, indien niet-1, een GRAYSCALE-afbeelding van in totaal 256 pixels zijn die als alfapalet wordt gebruikt en dealpha-waarde van de invoerafbeelding op pixelniveau moduleert.hintlogische OR van de vlaggen:image.AREA: Gebruik gebiedsschaling bij het verkleinen.image.BILINEAR: Gebruik bilineaire schaling.image.BICUBIC: Gebruik bicubische schaling.image.CENTER: Centreer de afbeelding op het display (na schaling).image.HMIRROR: Spiegel de afbeelding horizontaal.image.VFLIP: Spiegel de afbeelding verticaal.image.TRANSPOSE: Transponeer de afbeelding (verwissel x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Pasrgb_channel-extractie toe vóór het schalen.image.APPLY_COLOR_PALETTE_FIRST: Pascolor_palettetoe vóór het schalen.image.SCALE_ASPECT_KEEP: Schaal om binnen het display te passen.image.SCALE_ASPECT_EXPAND: Schaal om het display te vullen (bijsnijden).image.SCALE_ASPECT_IGNORE: Schaal om het display te vullen (uitrekken).image.ROTATE_90: Roteer met 90 graden (VFLIP | TRANSPOSE).image.ROTATE_180: Roteer met 180 graden (HMIRROR | VFLIP).image.ROTATE_270: Roteer met 270 graden (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Wist het scherm naar zwart.
display_offwordt geaccepteerd voor API-compatibiliteit met andere displayklassen en wordt genegeerd.
- ioctl(cmd: int, *args) object¶
Generiek ioctl-toegangspunt.
Geef
display.IOCTL_CHANNELdoor alscmdom het uitzendkanaal van het wireless TV shield in te stellen of op te vragen. Met een tweede argument (1-8) wordt het kanaal ingesteld; zonder tweede argument wordt het huidige kanaal teruggegeven. Er is geen kanaal geselecteerd totdat de eerste set-aanroep is gedaan.