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()을 통해 런타임에 선택됩니다. 해당 호출이 이루어지기 전까지는 어떤 채널도 선택되지 않습니다.
해상도와 프레이밍은 고정되어 있습니다 – 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: 쌍선형(bilinear) 스케일링을 사용합니다.image.BICUBIC: 쌍삼차(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 실드의 방송 채널을 설정하거나 가져오려면
display.IOCTL_CHANNEL을cmd로 전달하십시오. 두 번째 인수(1-8)가 있으면 채널이 설정되고, 두 번째 인수가 없으면 현재 채널이 반환됩니다. 첫 번째 설정 호출이 이루어지기 전까지는 어떤 채널도 선택되지 않습니다.