class RGBDisplay – RGB-displaydrivrutin¶
Klassen RGBDisplay driver 24-bitars parallella RGB-LCD-skärmar via STM32 LTDC (LCD-TFT)-styrenheten. LTDC strömmar pixlar direkt ut ur en SDRAM-baserad bildbuffert med den valda pixelklockan, så höga uppdateringsfrekvenser (upp till 120 Hz) är möjliga utan att CPU:n behöver vara inblandad.
På OpenMV Cam Pure Thermal matar samma 24-bitars parallella buss även en inbyggd TFP410 HDMI-kodare, så dess HDMI-utgång drivs också via denna klass – använd display_on=False för att släcka den inbyggda LCD-skärmen medan pixlar fortfarande klockas ut till kodaren.
Panelens upplösning väljs via framesize med konstanterna som definieras i modulen display (QVGA, VGA, WVGA, HD, FHD, …). Panelspecifika initieringssekvenser kopplas in via nyckelordsargumentet controller (till exempel ST7701 för ST7701-baserade paneler). Bakgrundsbelysningens ljusstyrka drivs som ett enkelt GPIO som standard, eller av DACBacklight / PWMBacklight om någon av dem skickas som backlight.
Bildrutor visas genom att anropa write() med en image.Image. Drivrutinen hanterar RGB-konvertering, skalning, ROI, palett och orienteringstransformationer internt.
Exempel – spegla kameran på en 480x272-panel vid 60 Hz:
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)
Konstruktorer¶
- 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)¶
framesizeEn av de standardupplösningar som stöds (se konstanterna i modulendisplay).refreshStäller in skärmens uppdateringsfrekvens i hertz (30-120). Detta styr RGB-LCD:ns pixelklocka.display_onAktiverar den lokala LCD-utgången. SkickaFalsepå OpenMV Cam Pure Thermal, vars 24-bitars parallella buss driver både den inbyggda LCD-skärmen och TFP410 HDMI-kodaren – detta håller den inbyggda LCD-skärmen släckt medan HDMI-kodaren fortfarande matas. På andra OpenMV Cam-modeller finns ingen delad mottagare och detta kan lämnas på sitt standardvärde.triple_bufferOmTruegörs uppdateringar av skärmen icke-blockerande, till priset av 3x displaystorleken i RAM.portraitByter plats på bildrutans bredd och höjd.controllerSkicka en instans av en styrkretsklass för att initiera den tillsammans med displayen.backlightSkicka en instans av en modul för styrning av bakgrundsbelysning som ska användas. Som standard styrs bakgrundsbelysningen via ett GPIO-stift.- deinit() None¶
Frigör de I/O-stift och det RAM som klassen använder. Detta anropas automatiskt vid destruktion.
- clear(display_off: bool = False) None¶
Rensar LCD-skärmen till svart.
display_offomTruestängs displaylogiken av i stället för att bildbufferten rensas till svart. Du bör även stänga av bakgrundsbelysningen efteråt för att säkerställa att skärmen blir svart, eftersom många skärmar är vita när enbart bakgrundsbelysningen är på.
- backlight(value: int | None = None) int¶
Ställer in LCD-skärmens dämpningsvärde för bakgrundsbelysning, från 0 (av) till 100 (på). Skicka inga argument för att hämta det aktuella bakgrundsbelysningsvärdet.
Om inte en
DACBacklight- ellerPWMBacklight-styrenhet skickades till konstruktorn styrs bakgrundsbelysningen som ett GPIO-stift och kan endast gå från 0 (av) till skilt från noll (på).
- 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¶
Visar en
imagevars övre vänstra hörn börjar vid positionenx,y. En sökvägssträng kan även skickas i stället för ett bildobjekt för att automatiskt läsa in bilden från disk.x_scalestyr hur mycket den visade bilden skalas i x-riktningen. Om värdet är negativt vänds bilden horisontellt. Omy_scaleinte anges matchar denx_scaleför att bevara bildförhållandet.y_scalestyr hur mycket den visade bilden skalas i y-riktningen. Om värdet är negativt vänds bilden vertikalt (kräver trippelbuffring). Omx_scaleinte anges matchar deny_scaleför att bevara bildförhållandet.roiär intresseområdets rektangeltupel(x, y, w, h)av bilden som ska visas.rgb_channelär den RGB-kanal (0=R, 1=G, 2=B) som ska extraheras ur en RGB565-bild och renderas i gråskala.-1inaktiverar kanalextraktion.alphastyr hur ogenomskinlig bilden är, från 0 (helt genomskinlig / svart) till 255 (ogenomskinlig).color_paletteen RGB565-bild på totalt 256 pixlar som används som en färguppslagstabell på gråskalevärdet hos indatabilden. Tillämpas efterrgb_channel-extraktion. Kan även vara en palett-enum (t.ex.image.PALETTE_RAINBOW).alpha_paletteen GRAYSCALE-bild på totalt 256 pixlar som används som en alfauppslagstabell per pixel på gråskalevärdet hos indatabilden. Tillämpas efterrgb_channel-extraktion.hintär en logisk ELLER av flaggorna:image.AREA: Använd ytskalning vid nedskalning i stället för närmaste granne.image.BILINEAR: Använd bilinjär skalning i stället för närmaste granne.image.BICUBIC: Använd bikubisk skalning i stället för närmaste granne.image.CENTER: Centrera bilden på displayen (tillämpas efter skalning).image.HMIRROR: Spegla bilden horisontellt.image.VFLIP: Vänd bilden vertikalt.image.TRANSPOSE: Transponera bilden (byt x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Utförrgb_channel-extraktion före skalning.image.APPLY_COLOR_PALETTE_FIRST: Tillämpacolor_paletteföre skalning.image.SCALE_ASPECT_KEEP: Skala bilden så att den får plats inuti displayen.image.SCALE_ASPECT_EXPAND: Skala bilden så att den fyller displayen (med beskärning).image.SCALE_ASPECT_IGNORE: Skala bilden så att den fyller displayen (med utsträckning).image.ROTATE_90: Rotera 90 grader (VFLIP | TRANSPOSE).image.ROTATE_180: Rotera 180 grader (HMIRROR | VFLIP).image.ROTATE_270: Rotera 270 grader (HMIRROR | TRANSPOSE).