klasa TVDisplay – Sterownik nakładki TV Shield¶
Klasa TVDisplay obsługuje nakładkę OpenMV TV Shield, która konwertuje bufor ramki RGB565 na sygnał wideo composite NTSC (352x240, 60 pól/s z przeplotem) odpowiedni dla dowolnego telewizora lub analogowego monitora wideo.
Obsługiwane są dwa warianty nakładki:
Przewodowa TV Shield, która udostępnia sygnał composite na pojedynczym gnieździe RCA.
Bezprzewodowa Wireless TV Shield, która przekazuje ten sam sygnał do analogowego nadajnika wideo 2,4 GHz. Kanał odbiornika (1–8) jest wybierany w czasie wykonywania za pomocą
ioctl()zdisplay.IOCTL_CHANNEL; do momentu wykonania tego wywołania żaden kanał nie jest wybrany.
Rozdzielczość i kadrowanie są stałe – TVDisplay nie przyjmuje argumentu framesize. Ramki są prezentowane przez przekazanie obiektu image.Image do write(), która wewnętrznie obsługuje skalowanie, ROI, paletę i transformacje orientacji.
Przykładowe użycie:
import csi
import display
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.SIF) # 352x240, matches the TV output
tv = display.TVDisplay()
while True:
tv.write(csi0.snapshot())
Konstruktory¶
- class display.TVDisplay(triple_buffer: bool = True)¶
triple_bufferJeśli True, aktualizacje ekranu stają się nieblokujące kosztem 3-krotności rozmiaru wyświetlacza w pamięci RAM. Wartość domyślna zależy od płytki.- deinit() None¶
Zwalnia piny we/wy oraz pamięć RAM używaną przez klasę. Wywoływana automatycznie przy niszczeniu obiektu.
- 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 = 256, color_palette: int | 'image.Image' | None = None, alpha_palette: 'image.Image' | None = None, hint: int = 0) None¶
Wyświetla obraz
image, którego lewy górny róg zaczyna się w pozycji x, y.x_scalekontroluje, o ile wyświetlany obraz jest skalowany w kierunku x (liczba zmiennoprzecinkowa). Jeśli wartość jest ujemna, obraz zostanie odbity w poziomie.y_scalekontroluje, o ile wyświetlany obraz jest skalowany w kierunku y (liczba zmiennoprzecinkowa). Jeśli wartość jest ujemna, obraz zostanie odbity w pionie.roito krotka prostokąta obszaru zainteresowania (x, y, w, h) obrazu do wyświetlenia.rgb_channelto kanał RGB (0=R, G=1, B=2) wyodrębniany z obrazu RGB565 i renderowany na wyświetlaczu.alphakontroluje, jak nieprzezroczysty jest obraz. Wartość 256 wyświetla obraz nieprzezroczysty, natomiast wartość niższa niż 256 daje czarny przezroczysty obraz. 0 skutkuje całkowicie czarnym obrazem.color_palettejeśli nie jest-1, może być wyliczeniem palety kolorów lub obrazem RGB565 o łącznie 256 pikselach, używanym jako tablica przeglądowa kolorów dla wartości w skali szarości obrazu wejściowego.alpha_palettejeśli nie jest-1, może być obrazem GRAYSCALE o łącznie 256 pikselach, używanym jako paleta alfa modulująca wartośćalphaobrazu wejściowego na poziomie poszczególnych pikseli.hintlogiczne LUB z flag:image.AREA: Użyj skalowania obszarowego przy zmniejszaniu.image.BILINEAR: Użyj skalowania dwuliniowego.image.BICUBIC: Użyj skalowania dwusześciennego.image.CENTER: Wyśrodkuj obraz na wyświetlaczu (po skalowaniu).image.HMIRROR: Odbij obraz w poziomie.image.VFLIP: Odwróć obraz w pionie.image.TRANSPOSE: Transponuj obraz (zamień x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Zastosuj wyodrębnieniergb_channelprzed skalowaniem.image.APPLY_COLOR_PALETTE_FIRST: Zastosujcolor_paletteprzed skalowaniem.image.SCALE_ASPECT_KEEP: Skaluj, aby zmieścić się na wyświetlaczu.image.SCALE_ASPECT_EXPAND: Skaluj, aby wypełnić wyświetlacz (z przycięciem).image.SCALE_ASPECT_IGNORE: Skaluj, aby wypełnić wyświetlacz (z rozciągnięciem).image.ROTATE_90: Obróć o 90 stopni (VFLIP | TRANSPOSE).image.ROTATE_180: Obróć o 180 stopni (HMIRROR | VFLIP).image.ROTATE_270: Obróć o 270 stopni (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Czyści ekran do koloru czarnego.
display_offjest akceptowany dla zgodności API z innymi klasami wyświetlaczy i jest ignorowany.
- ioctl(cmd: int, *args) object¶
Ogólny punkt wejścia ioctl.
Przekaż
display.IOCTL_CHANNELjakocmd, aby ustawić lub odczytać kanał nadawania bezprzewodowej nakładki TV. Z drugim argumentem (1-8) kanał jest ustawiany; bez drugiego argumentu zwracany jest bieżący kanał. Żaden kanał nie jest wybrany do momentu pierwszego wywołania ustawiającego.