class RGBDisplay – RGB-näytön ajuri¶
RGBDisplay-luokka ohjaa 24-bittisiä rinnakkaisia RGB-LCD-näyttöjä STM32:n LTDC (LCD-TFT) -ohjaimen kautta. LTDC suoratoistaa pikselit suoraan SDRAM-pohjaisesta kehyspuskurista valitulla pikselikellolla, joten korkeat virkistystaajuudet (jopa 120 Hz) ovat mahdollisia ilman suorittimen osallistumista.
OpenMV Cam Pure Thermal -kamerassa sama 24-bittinen rinnakkaisväylä syöttää myös piirilevyllä olevaa TFP410 HDMI -enkooderia, joten myös sen HDMI-ulostulo ohjataan tämän luokan kautta – käytä display_on=False pimentääksesi piirilevyn LCD-näytön samalla kun pikseleitä yhä syötetään enkooderille.
Näytön resoluutio valitaan framesize-parametrilla käyttäen display-moduulissa määriteltyjä vakioita (QVGA, VGA, WVGA, HD, FHD, …). Näyttökohtaiset alustussekvenssit kytketään controller-avainsana-argumentin kautta (esimerkiksi ST7701 ST7701-pohjaisille näytöille). Taustavalon kirkkautta ohjataan oletuksena yksinkertaisena GPIO-nastana, tai DACBacklight- / PWMBacklight-ohjaimella, jos sellainen välitetään backlight-parametrina.
Kehykset näytetään kutsumalla write()-metodia image.Image-objektin kanssa. Ajuri hoitaa RGB-muunnoksen, skaalauksen, ROI:n, palettimuunnokset ja orientaatiomuunnokset sisäisesti.
Esimerkki – peilaa kamera 480x272 -näytölle 60 Hz:n taajuudella:
import csi
import display
import image
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
lcd = display.RGBDisplay(framesize=display.FHVGA, refresh=60)
while True:
lcd.write(csi0.snapshot(), hint=image.SCALE_ASPECT_KEEP)
Konstruktorit¶
- class display.RGBDisplay(framesize: int = display.FWVGA, refresh: int = 60, display_on: bool = True, triple_buffer: bool = True, portrait: bool = False, controller: object | None = None, backlight: object | None = None)¶
framesizeYksi vakiotuetuista resoluutioista (katsodisplay-moduulin vakiot).refreshAsettaa näytön virkistystaajuuden hertseinä (30-120). Tämä ohjaa RGB-LCD:n pikselikelloa.display_onOttaa käyttöön paikallisen LCD-ulostulon. VälitäFalseOpenMV Cam Pure Thermal -kamerassa, jonka 24-bittinen rinnakkaisväylä ohjaa sekä piirilevyn LCD-näyttöä että TFP410 HDMI -enkooderia – tämä pitää piirilevyn LCD-näytön pimennettynä samalla kun HDMI-enkooderia yhä syötetään. Muissa OpenMV Cam -kameroissa ei ole jaettua kohdetta, joten tämä voidaan jättää oletusarvoonsa.triple_bufferJosTrue, tekee näytön päivityksistä lukkiutumattomia 3-kertaisen näyttökoon RAM-kustannuksella.portraitVaihtaa kehyskoon leveyden ja korkeuden keskenään.controllerVälitä ohjainpiiriluokan instanssi alustaaksesi sen näytön ohella.backlightVälitä käytettävän taustavalo-ohjainmoduulin instanssi. Oletuksena taustavaloa ohjataan GPIO-nastan kautta.- deinit() None¶
Vapauttaa luokan käyttämät I/O-nastat ja RAM-muistin. Tämä kutsutaan automaattisesti tuhoamisen yhteydessä.
- clear(display_off: bool = False) None¶
Tyhjentää LCD-näytön mustaksi.
display_offjosTrue, sammuttaa näyttölogiikan sen sijaan että tyhjentäisi kehyspuskurin mustaksi. Sammuta tämän jälkeen myös taustavalo varmistaaksesi, että näyttö menee mustaksi, sillä monet näytöt ovat valkoisia, kun vain taustavalo on päällä.
- backlight(value: int | None = None) int¶
Asettaa LCD-näytön taustavalon himmennysarvon välillä 0 (pois) ja 100 (päällä). Älä anna argumentteja saadaksesi nykyisen taustavaloarvon.
Ellei konstruktorille välitetty
DACBacklight- taiPWMBacklight-ohjainta, taustavaloa ohjataan GPIO-nastana ja se menee vain välillä 0 (pois) ja nollasta poikkeava (päällä).
- 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 = 255, color_palette: image.Image | None = None, alpha_palette: image.Image | None = None, hint: int = 0) None¶
Näyttää
image-kuvan, jonka vasen yläkulma alkaa sijainnistax,y. Kuvaobjektin sijaan voidaan välittää myös polkumerkkijono, jolloin kuva ladataan automaattisesti levyltä.x_scaleohjaa, kuinka paljon näytettävää kuvaa skaalataan x-suunnassa. Jos tämä arvo on negatiivinen, kuva peilataan vaakasuunnassa. Josy_scaleei ole määritelty, se vastaax_scale-arvoa kuvasuhteen säilyttämiseksi.y_scaleohjaa, kuinka paljon näytettävää kuvaa skaalataan y-suunnassa. Jos tämä arvo on negatiivinen, kuva käännetään pystysuunnassa (vaatii kolmoispuskuroinnin). Josx_scaleei ole määritelty, se vastaay_scale-arvoa kuvasuhteen säilyttämiseksi.roion näytettävän kuvan kohdealueen suorakulmiotuple(x, y, w, h).rgb_channelon RGB-kanava (0=R, 1=G, 2=B), joka poimitaan RGB565-kuvasta ja renderöidään harmaasävynä.-1poistaa kanavan poiminnan käytöstä.alphaohjaa, kuinka läpinäkymätön kuva on, välillä 0 (täysin läpinäkyvä / musta) ja 255 (läpinäkymätön).color_paletteRGB565-kuva, jossa on yhteensä 256 pikseliä, käytetään värihakutauluna syötekuvan harmaasävyarvoon. Sovelletaanrgb_channel-poiminnan jälkeen. Voi olla myös paletti-enum (esim.image.PALETTE_RAINBOW).alpha_paletteGRAYSCALE-kuva, jossa on yhteensä 256 pikseliä, käytetään pikselikohtaisena alfahakutauluna syötekuvan harmaasävyarvoon. Sovelletaanrgb_channel-poiminnan jälkeen.hinton lippujen looginen TAI:image.AREA: Käytä aluekohtaista skaalausta pienennettäessä lähimmän naapurin sijaan.image.BILINEAR: Käytä bilineaarista skaalausta lähimmän naapurin sijaan.image.BICUBIC: Käytä bikuubista skaalausta lähimmän naapurin sijaan.image.CENTER: Keskitä kuva näytölle (sovelletaan skaalauksen jälkeen).image.HMIRROR: Peilaa kuva vaakasuunnassa.image.VFLIP: Käännä kuva pystysuunnassa.image.TRANSPOSE: Transponoi kuva (vaihda x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Teergb_channel-poiminta ennen skaalausta.image.APPLY_COLOR_PALETTE_FIRST: Sovellacolor_paletteennen skaalausta.image.SCALE_ASPECT_KEEP: Skaalaa kuva mahtumaan näytön sisään.image.SCALE_ASPECT_EXPAND: Skaalaa kuva täyttämään näyttö (rajaten).image.SCALE_ASPECT_IGNORE: Skaalaa kuva täyttämään näyttö (venyttäen).image.ROTATE_90: Kierrä 90 astetta (VFLIP | TRANSPOSE).image.ROTATE_180: Kierrä 180 astetta (HMIRROR | VFLIP).image.ROTATE_270: Kierrä 270 astetta (HMIRROR | TRANSPOSE).