class TVDisplay – TV Shield Sürücüsü

TVDisplay sınıfı, bir RGB565 çerçeve arabelleğini herhangi bir televizyon veya analog video monitörüne uygun bir NTSC kompozit video sinyaline (352x240, 60 alan/s geçmeli) dönüştüren OpenMV TV Shield’i sürer.

İki shield türü desteklenir:

  • Kompozit sinyali tek bir RCA jakı üzerinden sunan kablolu TV Shield.

  • Aynı sinyali 2,4 GHz analog video vericisine besleyen Wireless TV Shield. Alıcı kanalı (1–8) çalışma zamanında display.IOCTL_CHANNEL ile ioctl() kullanılarak seçilir; bu çağrı yapılana kadar hiçbir kanal seçili olmaz.

Çözünürlük ve çerçeveleme sabittir – TVDisplay bir framesize argümanı almaz. Çerçeveler, ölçekleme, ROI, palet ve yönlendirme dönüşümlerini dahili olarak işleyen write() öğesine bir image.Image iletilerek sunulur.

Örnek kullanım:

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

Yapıcılar

class display.TVDisplay(triple_buffer: bool = True)

triple_buffer True ise, RAM’de ekran boyutunun 3 katı maliyetiyle ekran güncellemelerini bloklamayan hale getirir. Varsayılan değer karta bağlıdır.

deinit() None

Sınıf tarafından kullanılan G/Ç pinlerini ve RAM’i serbest bırakır. Bu, yok etme sırasında otomatik olarak çağrılır.

width() int

Ekranın genişliğini (352) döndürür.

height() int

Ekranın yüksekliğini (240) döndürür.

refresh() int

Yenileme hızını (60) döndürür.

triple_buffer() bool

Üçlü arabelleğin etkin olup olmadığını döndürür.

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

Sol üst köşesi x, y konumundan başlayan bir image görüntüsünü görüntüler.

x_scale görüntülenen görüntünün x yönünde ne kadar ölçekleneceğini kontrol eder (float). Bu değer negatifse görüntü yatay olarak çevrilir.

y_scale görüntülenen görüntünün y yönünde ne kadar ölçekleneceğini kontrol eder (float). Bu değer negatifse görüntü dikey olarak çevrilir.

roi görüntülenecek görüntünün ilgi bölgesi dikdörtgeni demetidir (x, y, w, h).

rgb_channel bir RGB565 görüntüsünden çıkarılıp ekranda işlenecek RGB kanalıdır (0=R, G=1, B=2).

alpha görüntünün ne kadar opak olduğunu kontrol eder. 256 değeri opak bir görüntü gösterirken, 256’dan düşük bir değer siyah saydam bir görüntü üretir. 0 tamamen siyah bir görüntüyle sonuçlanır.

color_palette -1 değilse, giriş görüntüsünün gri tonlama değeri üzerinde renk arama tablosu olarak kullanılacak bir renk paleti enum’u veya toplam 256 piksellik bir RGB565 görüntüsü olabilir.

alpha_palette -1 değilse, giriş görüntüsünün alpha değerini piksel başına modüle eden bir alfa paleti olarak kullanılacak toplam 256 piksellik bir GRAYSCALE görüntüsü olabilir.

hint aşağıdaki bayrakların mantıksal VEYA işlemidir:

clear(display_off: bool = False) None

Ekranı siyaha temizler.

display_off diğer ekran sınıflarıyla API uyumluluğu için kabul edilir ve yok sayılır.

ioctl(cmd: int, *args) object

Genel ioctl giriş noktası.

Kablosuz TV shield yayın kanalını ayarlamak veya almak için cmd olarak display.IOCTL_CHANNEL iletin. İkinci bir argümanla (1-8) kanal ayarlanır; ikinci argüman olmadan mevcut kanal döndürülür. İlk ayarlama çağrısı yapılana kadar hiçbir kanal seçili olmaz.