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)¶
framesizeMột trong các độ phân giải chuẩn được hỗ trợ (xem hằng số moduledisplay).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_onBật đầu ra LCD cục bộ. TruyềnFalsetrê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_bufferNế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ị.portraitHoán đổi chiều rộng và chiều cao của framesize.controllerTruyề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.backlightTruyề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.
- 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.
- clear(display_off: bool = False) None¶
Xóa màn hình LCD về màu đen.
display_offnế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
DACBacklighthoặcPWMBacklightđượ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
imagecó 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_scalekiể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ếuy_scalekhông được chỉ định, nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định, nó sẽ khớp vớiy_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà kênh RGB (0=R, 1=G, 2=B) để trích xuất từ ảnh RGB565 và hiển thị theo thang xám.-1tắt trích xuất kênh.alphakiểm soát độ mờ đục của ảnh, từ 0 (hoàn toàn trong suốt / đen) đến 255 (mờ đục).color_palettemộ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ấtrgb_channel. Cũng có thể là một enum bảng màu (ví dụimage.PALETTE_RAINBOW).alpha_palettemộ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ấtrgb_channel.hintlà phép OR logic của các cờ:image.AREA: Sử dụng thu phóng diện tích khi thu nhỏ thay vì láng giềng gần nhất.image.BILINEAR: Sử dụng thu phóng song tuyến tính thay vì láng giềng gần nhất.image.BICUBIC: Sử dụng thu phóng song lập phương thay vì láng giềng gần nhất.image.CENTER: Căn giữa ảnh trên màn hình (áp dụng sau khi thu phóng).image.HMIRROR: Lật ảnh theo chiều ngang.image.VFLIP: Lật ảnh theo chiều dọc.image.TRANSPOSE: Chuyển vị ảnh (hoán đổi x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Thực hiện trích xuấtrgb_channeltrước khi thu phóng.image.APPLY_COLOR_PALETTE_FIRST: Áp dụngcolor_palettetrước khi thu phóng.image.SCALE_ASPECT_KEEP: Thu phóng ảnh để vừa trong màn hình.image.SCALE_ASPECT_EXPAND: Thu phóng ảnh để lấp đầy màn hình (cắt xén).image.SCALE_ASPECT_IGNORE: Thu phóng ảnh để lấp đầy màn hình (kéo giãn).image.ROTATE_90: Xoay 90 độ (VFLIP | TRANSPOSE).image.ROTATE_180: Xoay 180 độ (HMIRROR | VFLIP).image.ROTATE_270: Xoay 270 độ (HMIRROR | TRANSPOSE).