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() met display.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_buffer Indien 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.

width() int

Geeft de breedte van het scherm terug (352).

height() int

Geeft de hoogte van het scherm terug (240).

refresh() int

Geeft de verversingssnelheid terug (60).

triple_buffer() bool

Geeft terug of triple buffering is ingeschakeld.

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 image weer waarvan de linkerbovenhoek begint op locatie x, y.

x_scale bepaalt hoeveel de weergegeven afbeelding in de x-richting wordt geschaald (float). Als deze waarde negatief is, wordt de afbeelding horizontaal gespiegeld.

y_scale bepaalt hoeveel de weergegeven afbeelding in de y-richting wordt geschaald (float). Als deze waarde negatief is, wordt de afbeelding verticaal gespiegeld.

roi is de tuple (x, y, w, h) van het aandachtsgebied-rechthoek van de afbeelding die weergegeven moet worden.

rgb_channel is 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.

alpha bepaalt 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_palette kan, 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_palette kan, indien niet -1, een GRAYSCALE-afbeelding van in totaal 256 pixels zijn die als alfapalet wordt gebruikt en de alpha-waarde van de invoerafbeelding op pixelniveau moduleert.

hint logische OR van de vlaggen:

clear(display_off: bool = False) None

Wist het scherm naar zwart.

display_off wordt geaccepteerd voor API-compatibiliteit met andere displayklassen en wordt genegeerd.

ioctl(cmd: int, *args) object

Generiek ioctl-toegangspunt.

Geef display.IOCTL_CHANNEL door als cmd om 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.