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)¶
framesizeAz egyik szabványos támogatott felbontás (lásd adisplaymodul konstansait).refreshBeá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_onEngedélyezi a helyi LCD kimenetet. Az OpenMV Cam Pure Thermal esetén adjon átFalseé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_bufferHaTrue, 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.portraitFelcseréli a framesize szélességét és magasságát.controllerAdjon át egy vezérlőchip osztálypéldányt, hogy a kijelzővel együtt inicializálódjon.backlightAdjon á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.
- clear(display_off: bool = False) None¶
Feketére törli az LCD képernyőt.
display_offhaTrue, 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
DACBacklightvagyPWMBacklightvezé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
imageképet, amelynek bal felső sarka azx,yhelyen 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_scaleszabá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 azy_scalenincs megadva, azx_scaleértékét veszi fel a képarány megőrzése érdekében.Az
y_scaleszabá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 azx_scalenincs megadva, azy_scaleértékét veszi fel a képarány megőrzése érdekében.A
roia megjelenítendő kép érdeklődési terület téglalapjának(x, y, w, h)tuple-je.Az
rgb_channelaz RGB565 képből kinyerendő és szürkeárnyalatosan megjelenítendő RGB csatorna (0=R, 1=G, 2=B). A-1letiltja a csatorna kinyerését.Az
alphaszabályozza, hogy a kép mennyire átlátszatlan, 0 (teljesen átlátszó / fekete) és 255 (átlátszatlan) között.A
color_paletteegy ö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. Azrgb_channelkinyerés után kerül alkalmazásra. Lehet paletta enum is (pl.image.PALETTE_RAINBOW).Az
alpha_paletteegy ö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. Azrgb_channelkinyerés után kerül alkalmazásra.A
hinta következő flag-ek logikai VAGY-a:image.AREA: Terület-alapú méretezés használata kicsinyítéskor a legközelebbi szomszéd helyett.image.BILINEAR: Bilineáris méretezés használata a legközelebbi szomszéd helyett.image.BICUBIC: Bikubikus méretezés használata a legközelebbi szomszéd helyett.image.CENTER: A kép középre igazítása a kijelzőn (a méretezés után alkalmazva).image.HMIRROR: A kép vízszintes tükrözése.image.VFLIP: A kép függőleges tükrözése.image.TRANSPOSE: A kép transzponálása (x/y felcserélése).image.EXTRACT_RGB_CHANNEL_FIRST: Azrgb_channelkinyerés elvégzése a méretezés előtt.image.APPLY_COLOR_PALETTE_FIRST: Acolor_palettealkalmazása a méretezés előtt.image.SCALE_ASPECT_KEEP: A kép méretezése úgy, hogy beférjen a kijelzőbe.image.SCALE_ASPECT_EXPAND: A kép méretezése úgy, hogy kitöltse a kijelzőt (vágással).image.SCALE_ASPECT_IGNORE: A kép méretezése úgy, hogy kitöltse a kijelzőt (nyújtással).image.ROTATE_90: Elforgatás 90 fokkal (VFLIP | TRANSPOSE).image.ROTATE_180: Elforgatás 180 fokkal (HMIRROR | VFLIP).image.ROTATE_270: Elforgatás 270 fokkal (HMIRROR | TRANSPOSE).