class TVDisplay -- TV Shield ドライバ¶
TVDisplay クラスは OpenMV TV Shield を駆動します。これは RGB565 フレームバッファを、あらゆるテレビやアナログビデオモニターに適した NTSC コンポジットビデオ信号(352x240、60 フィールド/秒インターレース)に変換します。
2 つのシールドバリエーションがサポートされています:
有線の TV Shield。単一の RCA ジャックにコンポジット信号を出力します。
Wireless TV Shield。同じ信号を 2.4 GHz のアナログビデオ送信機に供給します。受信チャネル(1--8)は実行時に
display.IOCTL_CHANNELを指定したioctl()で選択します。その呼び出しが行われるまでは、どのチャネルも選択されません。
解像度とフレーミングは固定です。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_bufferTrue の場合、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¶
左上隅が位置 x、y から始まる
imageを表示します。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でない場合、ピクセルごとに入力画像のalpha値を調整するアルファパレットとして使用する合計 256 ピクセルの GRAYSCALE 画像にできます。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)。
- clear(display_off: bool = False) None¶
画面を黒にクリアします。
display_offは他のディスプレイクラスとの API 互換性のために受け入れられますが、無視されます。
- ioctl(cmd: int, *args) object¶
汎用 ioctl エントリポイント。
ワイヤレス TV シールドのブロードキャストチャネルを設定または取得するには、
cmdとしてdisplay.IOCTL_CHANNELを渡します。2 番目の引数(1-8)を指定するとチャネルが設定され、2 番目の引数なしの場合は現在のチャネルが返されます。最初の設定呼び出しが行われるまでは、どのチャネルも選択されません。