class TVDisplay -- Driver TV Shield

Kelas TVDisplay menggerakkan OpenMV TV Shield, yang mengonversi framebuffer RGB565 menjadi sinyal video komposit NTSC (352x240, 60 field/detik interlaced) yang sesuai untuk televisi atau monitor video analog mana pun.

Dua varian shield yang didukung:

  • TV Shield kabel, yang mengekspos sinyal komposit pada satu jack RCA.

  • Wireless TV Shield, yang menyalurkan sinyal yang sama ke pemancar video analog 2,4 GHz. Kanal penerima (1--8) dipilih saat runtime melalui ioctl() dengan display.IOCTL_CHANNEL; sampai panggilan itu dilakukan, tidak ada kanal yang dipilih.

Resolusi dan framing bersifat tetap -- TVDisplay tidak mengambil argumen framesize. Bingkai disajikan dengan meneruskan image.Image ke write(), yang menangani penskalaan, ROI, palet, dan transformasi orientasi secara internal.

Contoh penggunaan:

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())

Konstruktor

class display.TVDisplay(triple_buffer: bool = True)

triple_buffer Jika True maka membuat pembaruan ke layar menjadi non-blocking dengan biaya 3X ukuran layar dalam RAM. Defaultnya bergantung pada board.

deinit() None

Melepaskan pin I/O dan RAM yang digunakan oleh kelas ini. Dipanggil otomatis saat penghancuran.

width() int

Mengembalikan lebar layar (352).

height() int

Mengembalikan tinggi layar (240).

refresh() int

Mengembalikan laju penyegaran (60).

triple_buffer() bool

Mengembalikan apakah triple buffering diaktifkan.

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

Menampilkan image yang pojok kiri atasnya dimulai dari lokasi x, y.

x_scale mengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dicerminkan secara horizontal.

y_scale mengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal.

roi adalah tuple persegi panjang wilayah yang diminati (x, y, w, h) dari citra yang akan ditampilkan.

rgb_channel adalah kanal RGB (0=R, G=1, B=2) yang diekstrak dari citra RGB565 dan dirender pada layar.

alpha mengontrol seberapa buram citra tersebut. Nilai 256 menampilkan citra buram sementara nilai kurang dari 256 menghasilkan citra transparan hitam. 0 menghasilkan citra yang sepenuhnya hitam.

color_palette jika tidak -1 dapat berupa enum palet warna atau citra RGB565 berukuran total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai skala abu-abu dari citra masukan.

alpha_palette jika tidak -1 dapat berupa citra GRAYSCALE berukuran total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilai alpha dari citra masukan pada tingkat per piksel.

hint OR logis dari flag:

clear(display_off: bool = False) None

Bersihkan layar menjadi hitam.

display_off diterima untuk kompatibilitas API dengan kelas display lainnya dan diabaikan.

ioctl(cmd: int, *args) object

Titik masuk ioctl generik.

Berikan display.IOCTL_CHANNEL sebagai cmd untuk mengatur atau mendapatkan kanal siaran TV Shield nirkabel. Dengan argumen kedua (1-8), kanal diatur; tanpa argumen kedua, kanal saat ini dikembalikan. Tidak ada kanal yang dipilih hingga panggilan pengaturan pertama dilakukan.