клас TVDisplay – Драйвер TV Shield¶
Клас TVDisplay керує OpenMV TV Shield, який перетворює кадровий буфер RGB565 на композитний відеосигнал NTSC (352x240, 60 полів/с із прогресивним скануванням), придатний для будь-якого телевізора або аналогового відеомонітора.
Підтримуються два варіанти шилда:
Дротовий TV Shield, який виводить композитний сигнал на один роз’єм RCA.
Wireless TV Shield, який подає той самий сигнал на аналоговий відеопередавач 2,4 ГГц. Канал приймача (1–8) вибирається під час виконання через
ioctl()зdisplay.IOCTL_CHANNEL; до цього виклику канал не вибрано.
Роздільна здатність та кадрування фіксовані — TVDisplay не приймає аргумент framesize. Кадри відображаються шляхом передачі image.Image до write(), який внутрішньо виконує масштабування, ROI, перетворення палітри та орієнтації.
Приклад використання:
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())
Конструктори¶
- class display.TVDisplay(triple_buffer: bool = True)¶
triple_bufferЯкщо True, оновлення екрана стає неблокуючим за рахунок витрат 3X розміру дисплея в RAM. Значення за замовчуванням залежить від плати.- deinit() None¶
Звільняє виводи та RAM, що використовуються класом. Викликається автоматично при знищенні об’єкта.
- 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¶
Відображає
image, лівий верхній кут якого починається у точці x, y.x_scaleвизначає масштабування відображуваного зображення по осі x (число з плаваючою точкою). Від’ємне значення горизонтально відображає зображення.y_scaleвизначає масштабування відображуваного зображення по осі y (число з плаваючою точкою). Від’ємне значення вертикально перевертає зображення.roi— кортеж прямокутника області інтересу (x, y, w, h) зображення для відображення.rgb_channel— канал RGB (0=R, G=1, B=2) для витягнення з зображення RGB565 та відображення на дисплеї.alphaвизначає непрозорість зображення. Значення 256 відображає непрозоре зображення, значення менше 256 дає чорне прозоре зображення. 0 дає повністю чорне зображення.color_paletteякщо не-1, може бути переліком кольорової палітри або 256-піксельним зображенням RGB565 для використання як таблиці відповідності кольорів за значенням відтінків сірого вхідного зображення.alpha_paletteякщо не-1, може бути 256-піксельним зображенням GRAYSCALE для використання як палітри альфа-каналу, що модулює значенняalphaвхідного зображення на рівні кожного пікселя.hint— логічне АБО прапорців:image.AREA: Використовувати масштабування по площі при зменшенні.image.BILINEAR: Використовувати білінійне масштабування.image.BICUBIC: Використовувати бікубічне масштабування.image.CENTER: Центрувати зображення на дисплеї (після масштабування).image.HMIRROR: Горизонтально відобразити зображення.image.VFLIP: Вертикально перевернути зображення.image.TRANSPOSE: Транспонувати зображення (поміняти x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Застосувати витягненняrgb_channelперед масштабуванням.image.APPLY_COLOR_PALETTE_FIRST: Застосуватиcolor_paletteперед масштабуванням.image.SCALE_ASPECT_KEEP: Масштабувати з вписуванням у дисплей.image.SCALE_ASPECT_EXPAND: Масштабувати для заповнення дисплея (з обрізанням).image.SCALE_ASPECT_IGNORE: Масштабувати для заповнення дисплея (з розтягуванням).image.ROTATE_90: Повернути на 90 градусів (VFLIP | TRANSPOSE).image.ROTATE_180: Повернути на 180 градусів (HMIRROR | VFLIP).image.ROTATE_270: Повернути на 270 градусів (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Очищує екран до чорного кольору.
display_offприймається для сумісності API з іншими класами дисплеїв та ігнорується.
- ioctl(cmd: int, *args) object¶
Загальна точка входу ioctl.
Передайте
display.IOCTL_CHANNELякcmd, щоб встановити або отримати канал трансляції бездротового TV Shield. З другим аргументом (1-8) канал встановлюється; без другого аргументу повертається поточний канал. Канал не вибирається до першого виклику встановлення.