class RGBDisplay – RGB kijelző-illesztőprogram

Az RGBDisplay osztály 24 bites párhuzamos RGB LCD-ket vezérel az STM32 LTDC (LCD-TFT) vezérlőn keresztül. Az LTDC közvetlenül egy SDRAM-alapú képkocka-pufferből továbbítja a képpontokat a kiválasztott képpont-órajellel, így nagy frissítési frekvenciák (akár 120 Hz) érhetők el a CPU bevonása nélkül.

Az OpenMV Cam Pure Thermal esetén ugyanaz a 24 bites párhuzamos busz egy beépített TFP410 HDMI kódolót is táplál, így a HDMI kimenet is ezen az osztályon keresztül vezérelhető – a display_on=False használatával a beépített LCD elsötétíthető, miközben a képpontok továbbra is a kódolóra jutnak.

A panel felbontása a framesize paraméteren keresztül választható ki a display modulban definiált konstansokkal (QVGA, VGA, WVGA, HD, FHD, …). A panelspecifikus inicializálási szekvenciák a controller kulcsszavas argumentumon keresztül illeszthetők be (például ST7701 az ST7701-alapú panelekhez). A háttérvilágítás fényereje alapértelmezetten egyszerű GPIO-ként vezérelhető, vagy a DACBacklight / PWMBacklight osztályokkal, ha azt a backlight paraméterben adjuk át.

A képkockák megjelenítése a write() hívásával történik egy image.Image objektummal. Az illesztőprogram belsőleg kezeli az RGB-átalakítást, a méretezést, a ROI-t, a palettát és a tájolási transzformációkat.

Példa – a kamera tükrözése egy 480x272 felbontású panelre 60 Hz-en:

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)

Konstruktorok

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)

framesize Az egyik szabványos támogatott felbontás (lásd a display modul konstansait).

refresh Beállítja a képernyő frissítési frekvenciáját hertzben (30-120). Ez vezérli az RGB LCD képpont-órajelét.

display_on Engedélyezi a helyi LCD kimenetet. Az OpenMV Cam Pure Thermal esetén adjon át False értéket, amelynek 24 bites párhuzamos busza egyszerre vezérli a beépített LCD-t és a TFP410 HDMI kódolót – ez elsötétítve tartja a beépített LCD-t, miközben továbbra is táplálja a HDMI kódolót. Más OpenMV Cam modelleken nincs közös fogadó, így ez az alapértelmezett értéken hagyható.

triple_buffer Ha True, a képernyő frissítései nem blokkolóvá válnak, cserébe a megjelenítési méret háromszorosát igénylik a RAM-ban.

portrait Felcseréli a framesize szélességét és magasságát.

controller Adjon át egy vezérlőchip osztálypéldányt, hogy a kijelzővel együtt inicializálódjon.

backlight Adjon át egy használandó háttérvilágítás-vezérlő modulpéldányt. Alapértelmezetten a háttérvilágítás egy GPIO lábon keresztül vezérelhető.

deinit() None

Felszabadítja az osztály által használt I/O lábakat és RAM-ot. Ez automatikusan meghívódik a megsemmisítéskor.

width() int

Visszaadja a képernyő szélességét.

height() int

Visszaadja a képernyő magasságát.

triple_buffer() bool

Visszaadja, hogy a hármas pufferelés engedélyezve van-e.

bgr() bool

Visszaadja, hogy a vörös és kék csatornák fel vannak-e cserélve.

byte_swap() bool

Visszaadja, hogy az RGB565 képpont-bájtok fel vannak-e cserélve a kimeneten.

framesize() int

Visszaadja a framesize konstanst, amellyel a kijelző konfigurálva lett.

refresh() int

Visszaadja a frissítési frekvenciát.

clear(display_off: bool = False) None

Feketére törli az LCD képernyőt.

display_off ha True, kikapcsolja a kijelző logikáját ahelyett, hogy a képkocka-puffert feketére törölné. Ezután a háttérvilágítást is ki kell kapcsolni, hogy a képernyő biztosan elsötétüljön, mivel sok kijelző fehér, ha csak a háttérvilágítás van bekapcsolva.

backlight(value: int | None = None) int

Beállítja az LCD háttérvilágításának fényerőcsökkentési értékét 0 (ki) és 100 (be) között. Argumentum nélkül hívva visszaadja az aktuális háttérvilágítási értéket.

Hacsak nem adtak át DACBacklight vagy PWMBacklight vezérlőt a konstruktornak, a háttérvilágítás GPIO lábként vezérelhető, és csak 0 (ki) és nem nulla (be) között váltható.

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

Megjelenít egy image képet, amelynek bal felső sarka az x, y helyen kezdődik. Kép objektum helyett elérési út karakterlánc is átadható, amely automatikusan betölti a képet a lemezről.

Az x_scale szabályozza, hogy a megjelenített kép mennyivel legyen méretezve x irányban. Ha ez az érték negatív, a kép vízszintesen tükröződik. Ha az y_scale nincs megadva, az x_scale értékét veszi fel a képarány megőrzése érdekében.

Az y_scale szabályozza, hogy a megjelenített kép mennyivel legyen méretezve y irányban. Ha ez az érték negatív, a kép függőlegesen tükröződik (hármas pufferelést igényel). Ha az x_scale nincs megadva, az y_scale értékét veszi fel a képarány megőrzése érdekében.

A roi a megjelenítendő kép érdeklődési terület téglalapjának (x, y, w, h) tuple-je.

Az rgb_channel az RGB565 képből kinyerendő és szürkeárnyalatosan megjelenítendő RGB csatorna (0=R, 1=G, 2=B). A -1 letiltja a csatorna kinyerését.

Az alpha szabályozza, hogy a kép mennyire átlátszatlan, 0 (teljesen átlátszó / fekete) és 255 (átlátszatlan) között.

A color_palette egy összesen 256 képpontból álló RGB565 kép, amely a bemeneti kép szürkeárnyalatos értékén alkalmazott színkereső táblaként szolgál. Az rgb_channel kinyerés után kerül alkalmazásra. Lehet paletta enum is (pl. image.PALETTE_RAINBOW).

Az alpha_palette egy összesen 256 képpontból álló GRAYSCALE kép, amely a bemeneti kép szürkeárnyalatos értékén képpontonkénti alfa-kereső táblaként szolgál. Az rgb_channel kinyerés után kerül alkalmazásra.

A hint a következő flag-ek logikai VAGY-a: