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() z display.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_buffer Jeś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.

width() int

Zwraca szerokość ekranu (352).

height() int

Zwraca wysokość ekranu (240).

refresh() int

Zwraca częstotliwość odświeżania (60).

triple_buffer() bool

Zwraca informację, czy włączone jest potrójne buforowanie.

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_scale kontroluje, o ile wyświetlany obraz jest skalowany w kierunku x (liczba zmiennoprzecinkowa). Jeśli wartość jest ujemna, obraz zostanie odbity w poziomie.

y_scale kontroluje, o ile wyświetlany obraz jest skalowany w kierunku y (liczba zmiennoprzecinkowa). Jeśli wartość jest ujemna, obraz zostanie odbity w pionie.

roi to krotka prostokąta obszaru zainteresowania (x, y, w, h) obrazu do wyświetlenia.

rgb_channel to kanał RGB (0=R, G=1, B=2) wyodrębniany z obrazu RGB565 i renderowany na wyświetlaczu.

alpha kontroluje, 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_palette jeś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_palette jeśli nie jest -1, może być obrazem GRAYSCALE o łącznie 256 pikselach, używanym jako paleta alfa modulująca wartość alpha obrazu wejściowego na poziomie poszczególnych pikseli.

hint logiczne LUB z flag:

clear(display_off: bool = False) None

Czyści ekran do koloru czarnego.

display_off jest 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_CHANNEL jako cmd, 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.