class RGBDisplay – Pilote d’écran RGB¶
La classe RGBDisplay pilote des écrans LCD RGB parallèles 24 bits via le contrôleur STM32 LTDC (LCD-TFT). Le LTDC envoie les pixels directement depuis un tampon d’image en SDRAM à l’horloge pixel choisie, ce qui permet des fréquences de rafraîchissement élevées (jusqu’à 120 Hz) sans intervention du CPU.
Sur l’OpenMV Cam Pure Thermal, ce même bus parallèle 24 bits alimente aussi un encodeur HDMI TFP410 embarqué, de sorte que sa sortie HDMI est également pilotée par cette classe – utilisez display_on=False pour éteindre l’écran LCD embarqué tout en continuant d’envoyer les pixels à l’encodeur.
La résolution du panneau se sélectionne via framesize à l’aide des constantes définies dans le module display (QVGA, VGA, WVGA, HD, FHD, …). Les séquences d’initialisation propres à chaque panneau sont fournies via l’argument nommé controller (par exemple ST7701 pour les panneaux basés sur le ST7701). La luminosité du rétroéclairage est pilotée par défaut comme un simple GPIO, ou par DACBacklight / PWMBacklight si l’un d’eux est passé via backlight.
Les trames sont affichées en appelant write() avec une image.Image. Le pilote gère en interne la conversion RGB, la mise à l’échelle, le ROI, la palette et les transformations d’orientation.
Exemple – recopier la caméra sur un panneau 480x272 à 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)
Constructeurs¶
- 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)¶
framesizeUne des résolutions standard prises en charge (voir les constantes du moduledisplay).refreshDéfinit la fréquence de rafraîchissement de l’écran en hertz (30-120). Cela contrôle l’horloge pixel de l’écran LCD RGB.display_onActive la sortie LCD locale. PassezFalsesur l’OpenMV Cam Pure Thermal, dont le bus parallèle 24 bits pilote à la fois l’écran LCD embarqué et l’encodeur HDMI TFP410 – cela maintient l’écran LCD embarqué éteint tout en continuant d’alimenter l’encodeur HDMI. Sur les autres OpenMV Cams, il n’y a pas de destination partagée et cela peut être laissé à sa valeur par défaut.triple_bufferSiTrue, rend les mises à jour de l’écran non bloquantes au prix de 3x la taille de l’affichage en RAM.portraitÉchange la largeur et la hauteur du framesize.controllerPassez une instance de classe de puce contrôleur pour l’initialiser en même temps que l’affichage.backlightPassez une instance de module de contrôleur de rétroéclairage à utiliser. Par défaut, le rétroéclairage est contrôlé via une broche GPIO.- deinit() None¶
Libère les broches d’E/S et la RAM utilisées par la classe. Cette méthode est appelée automatiquement lors de la destruction.
- clear(display_off: bool = False) None¶
Efface l’écran LCD en noir.
display_offsiTrue, éteint la logique d’affichage au lieu d’effacer le tampon d’image en noir. Vous devez également éteindre le rétroéclairage ensuite pour vous assurer que l’écran devient noir, car de nombreux écrans sont blancs lorsque seul le rétroéclairage est allumé.
- backlight(value: int | None = None) int¶
Définit la valeur de variation du rétroéclairage de l’écran LCD, de 0 (éteint) à 100 (allumé). N’indiquez aucun argument pour obtenir la valeur actuelle du rétroéclairage.
À moins qu’un contrôleur
DACBacklightouPWMBacklightn’ait été passé au constructeur, le rétroéclairage est contrôlé comme une broche GPIO et ne passera que de 0 (éteint) à une valeur non nulle (allumé).
- 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¶
Affiche une
imagedont le coin supérieur gauche commence à l’emplacementx,y. Une chaîne de chemin peut également être passée à la place d’un objet image pour charger automatiquement l’image depuis le disque.x_scalecontrôle l’ampleur de la mise à l’échelle de l’image affichée dans la direction x. Si cette valeur est négative, l’image sera retournée horizontalement. Siy_scalen’est pas spécifié, il prendra la même valeur quex_scaleafin de conserver le rapport d’aspect.y_scalecontrôle l’ampleur de la mise à l’échelle de l’image affichée dans la direction y. Si cette valeur est négative, l’image sera retournée verticalement (nécessite le triple tampon). Six_scalen’est pas spécifié, il prendra la même valeur quey_scaleafin de conserver le rapport d’aspect.roiest le tuple rectangulaire de la région d’intérêt(x, y, w, h)de l’image à afficher.rgb_channelest le canal RGB (0=R, 1=G, 2=B) à extraire d’une image RGB565 et à rendre en niveaux de gris.-1désactive l’extraction de canal.alphacontrôle l’opacité de l’image, de 0 (entièrement transparente / noire) à 255 (opaque).color_paletteune image RGB565 de 256 pixels au total utilisée comme table de correspondance de couleurs sur la valeur en niveaux de gris de l’image d’entrée. Appliquée après l’extraction dergb_channel. Peut aussi être une énumération de palette (p. ex.image.PALETTE_RAINBOW).alpha_paletteune image GRAYSCALE de 256 pixels au total utilisée comme table de correspondance alpha par pixel sur la valeur en niveaux de gris de l’image d’entrée. Appliquée après l’extraction dergb_channel.hintest un OU logique des indicateurs :image.AREA: Utilise la mise à l’échelle par zone lors de la réduction au lieu du plus proche voisin.image.BILINEAR: Utilise la mise à l’échelle bilinéaire au lieu du plus proche voisin.image.BICUBIC: Utilise la mise à l’échelle bicubique au lieu du plus proche voisin.image.CENTER: Centre l’image sur l’affichage (appliqué après la mise à l’échelle).image.HMIRROR: Met l’image en miroir horizontalement.image.VFLIP: Retourne l’image verticalement.image.TRANSPOSE: Transpose l’image (échange x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Effectue l’extraction dergb_channelavant la mise à l’échelle.image.APPLY_COLOR_PALETTE_FIRST: Appliquecolor_paletteavant la mise à l’échelle.image.SCALE_ASPECT_KEEP: Met l’image à l’échelle pour qu’elle tienne dans l’affichage.image.SCALE_ASPECT_EXPAND: Met l’image à l’échelle pour remplir l’affichage (avec recadrage).image.SCALE_ASPECT_IGNORE: Met l’image à l’échelle pour remplir l’affichage (avec étirement).image.ROTATE_90: Pivote de 90 degrés (VFLIP | TRANSPOSE).image.ROTATE_180: Pivote de 180 degrés (HMIRROR | VFLIP).image.ROTATE_270: Pivote de 270 degrés (HMIRROR | TRANSPOSE).