class TVDisplay -- TV Shield 驅動程式¶
TVDisplay 類別驅動 OpenMV TV Shield,它將 RGB565 影格緩衝區轉換為 NTSC 複合視訊訊號(352x240,60 場/秒交錯),適用於任何電視或類比視訊監視器。
支援兩種擴充板變體:
有線的 TV Shield,它在單一 RCA 接頭上輸出複合訊號。
Wireless TV Shield,它將相同的訊號饋送至 2.4 GHz 類比視訊發射器。接收器通道(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,則使對螢幕的更新成為非阻塞式,代價是在 RAM 中需要 3 倍的顯示大小。預設值因板而異。- 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是要從 RGB565 影像擷取並算繪於顯示器上的 RGB 通道(0=R、G=1、B=2)。alpha控制影像的不透明程度。值為 256 時顯示不透明影像,低於 256 的值會產生黑色透明影像。0 則產生完全黑色的影像。color_palette若不為-1,可以是色彩調色盤列舉,或一個總計 256 像素的 RGB565 影像,作為輸入影像灰階值的色彩查詢表。alpha_palette若不為-1,可以是一個總計 256 像素的 GRAYSCALE 影像,作為 alpha 調色盤,在每像素層級調節輸入影像的alpha值。hint為下列各旗標的邏輯 OR: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)。
- ioctl(cmd: int, *args) object¶
通用 ioctl 進入點。
將
display.IOCTL_CHANNEL作為cmd傳入以設定或取得無線 TV 擴充板的廣播通道。帶第二個引數(1-8)時設定通道;無第二個引數時回傳目前通道。在第一次設定呼叫進行之前未選擇任何通道。