class TVDisplay – TV Shield 드라이버

TVDisplay 클래스는 RGB565 프레임버퍼를 모든 텔레비전이나 아날로그 비디오 모니터에 적합한 NTSC 컴포지트 비디오 신호(352x240, 60 필드/초 인터레이스)로 변환하는 OpenMV TV Shield를 구동합니다.

두 가지 실드 변형이 지원됩니다:

  • 유선 TV Shield는 단일 RCA 잭에서 컴포지트 신호를 노출합니다.

  • Wireless TV Shield는 동일한 신호를 2.4 GHz 아날로그 비디오 송신기로 공급합니다. 수신기 채널(1–8)은 display.IOCTL_CHANNEL을 사용하는 ioctl()을 통해 런타임에 선택됩니다. 해당 호출이 이루어지기 전까지는 어떤 채널도 선택되지 않습니다.

해상도와 프레이밍은 고정되어 있습니다 – TVDisplayframesize 인수를 받지 않습니다. 프레임은 image.Imagewrite()에 전달하여 표시되며, 이 메서드는 스케일링, 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배를 사용하는 대신 화면 업데이트를 논블로킹으로 만듭니다. 기본값은 보드에 따라 다릅니다.

deinit() None

클래스가 사용한 I/O 핀과 RAM을 해제합니다. 소멸 시 자동으로 호출됩니다.

width() int

화면의 너비(352)를 반환합니다.

height() int

화면의 높이(240)를 반환합니다.

refresh() int

새로 고침 빈도(60)를 반환합니다.

triple_buffer() bool

트리플 버퍼링이 활성화되어 있는지를 반환합니다.

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입니다:

clear(display_off: bool = False) None

화면을 검은색으로 지웁니다.

display_off은 다른 디스플레이 클래스와의 API 호환성을 위해 허용되며 무시됩니다.

ioctl(cmd: int, *args) object

범용 ioctl 진입점입니다.

무선 TV 실드의 방송 채널을 설정하거나 가져오려면 display.IOCTL_CHANNELcmd로 전달하십시오. 두 번째 인수(1-8)가 있으면 채널이 설정되고, 두 번째 인수가 없으면 현재 채널이 반환됩니다. 첫 번째 설정 호출이 이루어지기 전까지는 어떤 채널도 선택되지 않습니다.