class RGBDisplay -- Trình điều khiển màn hình RGB

Lớp RGBDisplay điều khiển các màn hình LCD RGB song song 24-bit thông qua bộ điều khiển STM32 LTDC (LCD-TFT). LTDC truyền điểm ảnh trực tiếp từ bộ đệm khung hình được hỗ trợ bởi SDRAM ở xung nhịp điểm ảnh đã chọn, do đó tốc độ làm mới cao (lên đến 120 Hz) có thể đạt được mà không cần CPU can thiệp.

Trên OpenMV Cam Pure Thermal, cùng bus song song 24-bit này cũng kết nối với bộ mã hóa HDMI TFP410 trên bo mạch, do đó đầu ra HDMI của nó cũng được điều khiển qua lớp này -- sử dụng display_on=False để tắt LCD trên bo mạch trong khi vẫn tiếp tục truyền điểm ảnh đến bộ mã hóa.

Độ phân giải màn hình được chọn qua framesize bằng cách sử dụng các hằng số được định nghĩa trong module display (QVGA, VGA, WVGA, HD, FHD, ...). Chuỗi khởi tạo riêng cho từng màn hình được cắm vào qua đối số từ khóa controller (ví dụ ST7701 cho các màn hình dựa trên ST7701). Độ sáng đèn nền được điều khiển bằng GPIO đơn giản theo mặc định, hoặc bằng DACBacklight / PWMBacklight nếu một trong số đó được truyền vào làm backlight.

Các khung hình được hiển thị bằng cách gọi write() với một image.Image. Trình điều khiển xử lý chuyển đổi RGB, tỷ lệ, ROI, bảng màu và các biến đổi hướng nội bộ.

Ví dụ -- phản chiếu camera lên màn hình 480x272 ở 60 Hz:

import csi
import display
import image

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)

lcd = display.RGBDisplay(framesize=display.FHVGA, refresh=60)

while True:
    lcd.write(csi0.snapshot(), hint=image.SCALE_ASPECT_KEEP)

Hàm khởi tạo

class display.RGBDisplay(framesize: int = display.FWVGA, refresh: int = 60, display_on: bool = True, triple_buffer: bool = True, portrait: bool = False, controller: object | None = None, backlight: object | None = None)

framesize Một trong các độ phân giải chuẩn được hỗ trợ (xem hằng số module display).

refresh Đặt tốc độ làm mới màn hình tính bằng hertz (30-120). Tham số này điều khiển xung nhịp điểm ảnh LCD RGB.

display_on Bật đầu ra LCD cục bộ. Truyền False trên OpenMV Cam Pure Thermal, nơi bus song song 24-bit điều khiển cả LCD trên bo mạch lẫn bộ mã hóa HDMI TFP410 -- điều này giữ cho LCD trên bo mạch tắt trong khi vẫn cấp dữ liệu cho bộ mã hóa HDMI. Trên các OpenMV Cam khác không có bộ chia sẻ này và có thể để mặc định.

triple_buffer Nếu là True, làm cho các cập nhật màn hình không bị chặn với chi phí là RAM gấp 3 lần kích thước hiển thị.

portrait Hoán đổi chiều rộng và chiều cao của framesize.

controller Truyền một thể hiện lớp chip điều khiển để khởi tạo cùng với màn hình.

backlight Truyền một thể hiện module điều khiển đèn nền để sử dụng. Theo mặc định, đèn nền sẽ được điều khiển qua chân (pin) GPIO.

deinit() None

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

width() int

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

height() int

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

triple_buffer() bool

Trả về giá trị cho biết bộ đệm ba có được bật hay không.

bgr() bool

Trả về giá trị cho biết kênh đỏ và kênh xanh dương có bị hoán đổi hay không.

byte_swap() bool

Trả về giá trị cho biết các byte điểm ảnh RGB565 có bị hoán đổi khi xuất ra hay không.

framesize() int

Trả về hằng số framesize mà màn hình được cấu hình với.

refresh() int

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

clear(display_off: bool = False) None

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

display_off nếu là True, tắt logic hiển thị thay vì xóa bộ đệm khung hình về màu đen. Bạn cũng nên tắt đèn nền sau đó để đảm bảo màn hình tắt hẳn, vì nhiều màn hình sẽ hiển thị màu trắng khi chỉ có đèn nền.

backlight(value: int | None = None) int

Đặt giá trị làm mờ đèn nền LCD, từ 0 (tắt) đến 100 (bật). Truyền không có đối số để lấy giá trị đèn nền hiện tại.

Trừ khi một bộ điều khiển DACBacklight hoặc PWMBacklight được truyền vào hàm khởi tạo, đèn nền được điều khiển như một chân (pin) GPIO và chỉ chuyển từ 0 (tắt) sang khác 0 (bật).

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 = 255, color_palette: image.Image | None = None, alpha_palette: image.Image | None = None, hint: int = 0) None

Hiển thị một image có góc trên bên trái bắt đầu tại vị trí x, y. Chuỗi đường dẫn cũng có thể được truyền thay vì đối tượng ảnh để tự động tải ảnh từ đĩa.

x_scale kiểm soát mức độ ảnh hiển thị được thu phóng theo hướng x. Nếu giá trị này âm, ảnh sẽ bị lật ngang. Nếu y_scale không được chỉ định, nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ ảnh hiển thị được thu phóng theo hướng y. Nếu giá trị này âm, ảnh sẽ bị lật dọc (yêu cầu bộ đệm ba). Nếu x_scale không được chỉ định, nó sẽ khớp với y_scale để duy trì tỷ lệ khung hình.

roi là bộ giá trị 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, 1=G, 2=B) để trích xuất từ ảnh RGB565 và hiển thị theo thang xám. -1 tắt trích xuất kênh.

alpha kiểm soát độ mờ đục của ảnh, từ 0 (hoàn toàn trong suốt / đen) đến 255 (mờ đục).

color_palette một ảnh RGB565 gồm tổng cộng 256 điểm ảnh được dùng làm bảng tra cứu màu sắc trên giá trị thang xám của ảnh đầu vào. Áp dụng sau khi trích xuất rgb_channel. Cũng có thể là một enum bảng màu (ví dụ image.PALETTE_RAINBOW).

alpha_palette một ảnh GRAYSCALE gồm tổng cộng 256 điểm ảnh được dùng làm bảng tra cứu alpha theo từng điểm ảnh trên giá trị thang xám của ảnh đầu vào. Áp dụng sau khi trích xuất rgb_channel.

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