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()dengandisplay.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_bufferJika 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.
- 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
imageyang pojok kiri atasnya dimulai dari lokasi x, y.x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dicerminkan secara horizontal.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal.roiadalah tuple persegi panjang wilayah yang diminati (x, y, w, h) dari citra yang akan ditampilkan.rgb_channeladalah kanal RGB (0=R, G=1, B=2) yang diekstrak dari citra RGB565 dan dirender pada layar.alphamengontrol 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_palettejika tidak-1dapat 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_palettejika tidak-1dapat berupa citra GRAYSCALE berukuran total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra masukan pada tingkat per piksel.hintOR logis dari flag:image.AREA: Gunakan penskalaan area saat memperkecil.image.BILINEAR: Gunakan penskalaan bilinear.image.BICUBIC: Gunakan penskalaan bikubik.image.CENTER: Pusatkan citra pada layar (setelah penskalaan).image.HMIRROR: Cerminkan citra secara horizontal.image.VFLIP: Balik citra secara vertikal.image.TRANSPOSE: Transpose citra (tukar x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Terapkan ekstraksirgb_channelsebelum penskalaan.image.APPLY_COLOR_PALETTE_FIRST: Terapkancolor_palettesebelum penskalaan.image.SCALE_ASPECT_KEEP: Skalakan agar sesuai di dalam layar.image.SCALE_ASPECT_EXPAND: Skalakan untuk memenuhi layar (memotong).image.SCALE_ASPECT_IGNORE: Skalakan untuk memenuhi layar (meregangkan).image.ROTATE_90: Putar 90 derajat (VFLIP | TRANSPOSE).image.ROTATE_180: Putar 180 derajat (HMIRROR | VFLIP).image.ROTATE_270: Putar 270 derajat (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Bersihkan layar menjadi hitam.
display_offditerima untuk kompatibilitas API dengan kelas display lainnya dan diabaikan.
- ioctl(cmd: int, *args) object¶
Titik masuk ioctl generik.
Berikan
display.IOCTL_CHANNELsebagaicmduntuk 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.