คลาส RGBDisplay -- ไดรเวอร์จอแสดงผล RGB¶
คลาส RGBDisplay ขับเคลื่อนจอ LCD RGB แบบขนาน 24 บิต ผ่านตัวควบคุม LTDC (LCD-TFT) ของ STM32 โดย LTDC จะส่งพิกเซลโดยตรงจากบัฟเฟอร์เฟรมที่อยู่บน SDRAM ตามความถี่พิกเซลที่กำหนด ทำให้อัตราการรีเฟรชสูง (สูงสุด 120 Hz) โดยไม่ต้องใช้ CPU
บน OpenMV Cam Pure Thermal บัสขนาน 24 บิตเดียวกันยังเชื่อมต่อกับ TFP410 HDMI encoder บนบอร์ด ดังนั้นเอาต์พุต HDMI จึงขับเคลื่อนผ่านคลาสนี้ด้วย -- ใช้ display_on=False เพื่อปิดจอ LCD บนบอร์ดในขณะที่ยังส่งพิกเซลไปยัง encoder ต่อไป
ความละเอียดของแผง LCD เลือกผ่าน framesize โดยใช้ค่าคงที่ที่กำหนดในโมดูล display (QVGA, VGA, WVGA, HD, FHD, ...) ลำดับการเริ่มต้นของแผงเฉพาะจะถูกกำหนดผ่านอาร์กิวเมนต์คีย์เวิร์ด controller (เช่น ST7701 สำหรับแผงที่ใช้ ST7701) ความสว่างของแบ็คไลท์ถูกควบคุมเป็น GPIO แบบเรียบง่ายตามค่าเริ่มต้น หรือผ่าน DACBacklight / PWMBacklight หากมีการส่งค่าเป็น backlight
เฟรมจะแสดงโดยการเรียก write() พร้อมกับ image.Image โดยไดรเวอร์จะจัดการการแปลง RGB การปรับขนาด ROI พาเลตต์ และการแปลงทิศทางภายใน
ตัวอย่าง -- ส่งภาพจากกล้องไปยังแผง 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)
ตัวสร้าง¶
- 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ความละเอียดมาตรฐานที่รองรับหนึ่งรายการ (ดูค่าคงที่ในโมดูลdisplay)refreshกำหนดอัตราการรีเฟรชหน้าจอเป็นเฮิร์ตซ์ (30-120) ค่านี้ควบคุมความถี่พิกเซลของ RGB LCDdisplay_onเปิดใช้งานเอาต์พุต LCD ในเครื่อง ส่งFalseบน OpenMV Cam Pure Thermal ซึ่งบัสขนาน 24 บิตขับเคลื่อนทั้งจอ LCD บนบอร์ดและ TFP410 HDMI encoder -- ค่านี้จะทำให้จอ LCD บนบอร์ดดับขณะที่ยังส่งข้อมูลให้ HDMI encoder บนบอร์ดอื่นๆ ของ OpenMV Cam ไม่มีเอาต์พุตร่วม และสามารถปล่อยให้เป็นค่าเริ่มต้นได้triple_bufferถ้าเป็นTrueจะทำให้การอัปเดตหน้าจอไม่บล็อก แต่แลกด้วยการใช้ RAM 3 เท่าของขนาดจอแสดงผลportraitสลับความกว้างและความสูงของ framesizecontrollerส่งอินสแตนซ์คลาสชิปควบคุมเพื่อเริ่มต้นพร้อมกับจอแสดงผลbacklightส่งอินสแตนซ์โมดูลควบคุมแบ็คไลท์ที่ต้องการใช้ ตามค่าเริ่มต้น แบ็คไลท์จะถูกควบคุมผ่านพิน GPIO- deinit() None¶
คืนทรัพยากรพินอินพุต/เอาต์พุตและ RAM ที่ใช้โดยคลาส ฟังก์ชันนี้จะถูกเรียกโดยอัตโนมัติเมื่อถูกทำลาย
- clear(display_off: bool = False) None¶
ล้างหน้าจอ LCD เป็นสีดำ
display_offถ้าเป็นTrueจะปิดลอจิกของจอแสดงผลแทนที่จะล้างบัฟเฟอร์เฟรมเป็นสีดำ คุณควรปิดแบ็คไลท์หลังจากนี้ด้วยเพื่อให้แน่ใจว่าหน้าจอจะดับ เนื่องจากจอแสดงผลหลายรุ่นจะแสดงสีขาวเมื่อเปิดแต่แบ็คไลท์เท่านั้น
- backlight(value: int | None = None) int¶
กำหนดค่าการหรี่แบ็คไลท์ LCD ตั้งแต่ 0 (ปิด) ถึง 100 (เต็มที่) ส่งโดยไม่มีอาร์กิวเมนต์เพื่อดูค่าแบ็คไลท์ปัจจุบัน
หากไม่มีการส่งตัวควบคุม
DACBacklightหรือPWMBacklightไปยังตัวสร้าง แบ็คไลท์จะถูกควบคุมเป็นพิน GPIO และจะเปลี่ยนแปลงได้เพียงจาก 0 (ปิด) เป็นค่าไม่เป็นศูนย์ (เปิด)
- 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¶
แสดงภาพ
imageโดยมีมุมซ้ายบนเริ่มต้นที่ตำแหน่งx,yสามารถส่งสตริงเส้นทางแทนออบเจ็กต์ภาพเพื่อโหลดภาพจากดิสก์โดยอัตโนมัติx_scaleควบคุมขนาดการปรับสเกลของภาพที่แสดงในทิศทาง x หากค่านี้เป็นลบ ภาพจะถูกพลิกในแนวนอน หากy_scaleไม่ได้ระบุ จะตรงกับx_scaleเพื่อรักษาอัตราส่วนภาพy_scaleควบคุมขนาดการปรับสเกลของภาพที่แสดงในทิศทาง y หากค่านี้เป็นลบ ภาพจะถูกพลิกในแนวตั้ง (ต้องการการบัฟเฟอร์สามชั้น) หากx_scaleไม่ได้ระบุ จะตรงกับy_scaleเพื่อรักษาอัตราส่วนภาพroiคือ tuple สี่เหลี่ยมผลประโยชน์(x, y, w, h)ของภาพที่ต้องการแสดงrgb_channelคือช่อง RGB (0=R, 1=G, 2=B) ที่จะดึงออกจากภาพ RGB565 และแสดงผลในระดับสีเทา-1ปิดใช้งานการดึงช่องสีalphaควบคุมความทึบแสงของภาพ ตั้งแต่ 0 (โปร่งใสสมบูรณ์ / ดำ) ถึง 255 (ทึบแสง)color_paletteภาพ RGB565 ขนาด 256 พิกเซลที่ใช้เป็นตารางค้นหาสีบนค่าระดับสีเทาของภาพต้นฉบับ ใช้งานหลังจากการดึงด้วยrgb_channelอาจเป็นค่า enum พาเลตต์ด้วย (เช่นimage.PALETTE_RAINBOW)alpha_paletteภาพ GRAYSCALE ขนาด 256 พิกเซลที่ใช้เป็นตารางค้นหาค่า alpha ต่อพิกเซลบนค่าระดับสีเทาของภาพต้นฉบับ ใช้งานหลังจากการดึงด้วยrgb_channelhintคือการ OR แบบลอจิคัลของแฟล็ก:image.AREA: ใช้การปรับขนาดแบบ area เมื่อลดขนาดแทน nearest neighborimage.BILINEAR: ใช้การปรับขนาดแบบ bilinear แทน nearest neighborimage.BICUBIC: ใช้การปรับขนาดแบบ bicubic แทน nearest neighborimage.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)