lớp TVDisplay -- Trình điều khiển TV Shield

Lớp TVDisplay điều khiển OpenMV TV Shield, chuyển đổi bộ đệm khung hình RGB565 thành tín hiệu video composite NTSC (352x240, 60 field/giây xen kẽ) phù hợp với bất kỳ tivi hoặc màn hình video analog nào.

Hai biến thể shield được hỗ trợ:

  • TV Shield có dây, cung cấp tín hiệu composite trên một jack RCA.

  • Wireless TV Shield, truyền tín hiệu tương tự vào bộ phát video analog 2.4 GHz. Kênh thu (1--8) được chọn lúc chạy qua ioctl() với display.IOCTL_CHANNEL; cho đến khi thực hiện lệnh đó thì chưa chọn kênh nào.

Độ phân giải và tốc độ khung hình là cố định -- TVDisplay không nhận tham số framesize. Khung hình được trình bày bằng cách truyền image.Image vào write(), hàm này xử lý nội bộ việc chia tỷ lệ, ROI, bảng màu và các phép biến đổi hướng.

Ví dụ sử dụng:

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

Hàm tạo

class display.TVDisplay(triple_buffer: bool = True)

triple_buffer Nếu True thì làm cho các cập nhật màn hình không bị chặn, nhưng tốn 3 lần kích thước màn hình trong RAM. Giá trị mặc định phụ thuộc vào bo mạch.

deinit() None

Giải phóng các chân I/O và RAM được sử dụng bởi lớp này. Được gọi tự động khi hủy đối tượng.

width() int

Trả về chiều rộng của màn hình (352).

height() int

Trả về chiều cao của màn hình (240).

refresh() int

Trả về tốc độ làm mới (60).

triple_buffer() bool

Trả về xem triple buffering có được bật hay không.

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

Hiển thị một image với góc trên bên trái bắt đầu tại vị trí x, y.

x_scale kiểm soát tỷ lệ phóng to/thu nhỏ của ảnh hiển thị theo chiều x (số thực). Nếu giá trị này âm thì ảnh sẽ bị lật ngang.

y_scale kiểm soát tỷ lệ phóng to/thu nhỏ của ảnh hiển thị theo chiều y (số thực). Nếu giá trị này âm thì ảnh sẽ bị lật dọc.

roi là bộ hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh cần hiển thị.

rgb_channel là kênh RGB (0=R, G=1, B=2) cần trích xuất từ ảnh RGB565 và hiển thị.

alpha kiểm soát độ mờ đục của ảnh. Giá trị 256 hiển thị ảnh không trong suốt, giá trị dưới 256 tạo ra ảnh đen trong suốt. 0 cho ảnh hoàn toàn đen.

color_palette nếu không phải -1 có thể là enum bảng màu hoặc ảnh RGB565 tổng cộng 256 điểm ảnh dùng làm bảng tra cứu màu sắc cho giá trị thang xám của ảnh đầu vào.

alpha_palette nếu không phải -1 có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh dùng làm bảng alpha điều biến giá trị alpha của ảnh đầu vào theo từng điểm ảnh.

hint là phép OR logic của các cờ:

clear(display_off: bool = False) None

Xóa màn hình về màu đen.

display_off được chấp nhận để tương thích API với các lớp màn hình khác và bị bỏ qua.

ioctl(cmd: int, *args) object

Điểm vào ioctl chung.

Truyền display.IOCTL_CHANNEL làm cmd để đặt hoặc lấy kênh phát sóng của wireless TV shield. Với tham số thứ hai (1-8) thì kênh được đặt; không có tham số thứ hai thì trả về kênh hiện tại. Chưa có kênh nào được chọn cho đến khi thực hiện lệnh đặt đầu tiên.