מחלקת TVDisplay – מנהל התקן TV Shield

המחלקה TVDisplay מניעה את ה-OpenMV TV Shield, אשר ממיר חוצץ פריימים RGB565 לאות וידאו מורכב NTSC (352x240, 60 שדות/שנייה בשזירה) המתאים לכל טלוויזיה או צג וידאו אנלוגי.

נתמכות שתי וריאנטים של ה-shield:

  • ה-TV Shield החוטי, אשר חושף את האות המורכב על שקע RCA יחיד.

  • ה-Wireless TV Shield, אשר מזין את אותו האות אל משדר וידאו אנלוגי בתדר 2.4 GHz. ערוץ המקלט (1–8) נבחר בזמן ריצה באמצעות ioctl() עם display.IOCTL_CHANNEL; עד שקריאה זו מתבצעת לא נבחר אף ערוץ.

הרזולוציה והמסגור קבועים – 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_buffer אם True אזי הופך עדכונים למסך לבלתי-חוסמים במחיר של פי 3 מגודל התצוגה ב-RAM. ברירת המחדל תלוית-לוח.

deinit() None

משחרר את פיני ה-I/O ואת ה-RAM שבשימוש המחלקה. נקרא אוטומטית בעת ההשמדה.

width() int

מחזיר את רוחב המסך (352).

height() int

מחזיר את גובה המסך (240).

refresh() int

מחזיר את קצב הרענון (60).

triple_buffer() bool

מחזיר אם שילוש חיץ (triple buffering) מופעל.

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

מציג image אשר הפינה השמאלית-עליונה שלו מתחילה במיקום x, y.

x_scale שולט בכמה התמונה המוצגת מוקטנת/מוגדלת בכיוון ה-x (מספר ממשי). אם ערך זה שלילי, התמונה תהפוך אופקית.

y_scale שולט בכמה התמונה המוצגת מוקטנת/מוגדלת בכיוון ה-y (מספר ממשי). אם ערך זה שלילי, התמונה תהפוך אנכית.

roi הוא טאפל מלבן אזור העניין (x, y, w, h) של התמונה להצגה.

rgb_channel הוא ערוץ ה-RGB (0=R, G=1, B=2) שיש לחלץ מתמונת RGB565 ולעבד על הצג.

alpha שולט במידת האטימות של התמונה. ערך של 256 מציג תמונה אטומה, בעוד ערך נמוך מ-256 מפיק תמונה שקופה שחורה. 0 מביא לתמונה שחורה לחלוטין.

color_palette אם אינו -1 יכול להיות enum של לוח צבעים או תמונת RGB565 בת 256 פיקסלים בסך הכל לשימוש כטבלת חיפוש צבעים על ערך גווני האפור של תמונת הקלט.

alpha_palette אם אינו -1 יכול להיות תמונת GRAYSCALE בת 256 פיקסלים בסך הכל לשימוש כלוח אלפא המווסת את ערך ה-alpha של תמונת הקלט ברמת הפיקסל הבודד.

hint OR לוגי של הדגלים:

clear(display_off: bool = False) None

מנקה את המסך לשחור.

display_off מתקבל לצורך תאימות API עם מחלקות צג אחרות ומתעלמים ממנו.

ioctl(cmd: int, *args) object

נקודת כניסה גנרית של ioctl.

העבר display.IOCTL_CHANNEL כ-cmd כדי להגדיר או לקבל את ערוץ השידור של ה-Wireless TV Shield. עם ארגומנט שני (1-8) הערוץ נקבע; ללא ארגומנט שני מוחזר הערוץ הנוכחי. לא נבחר אף ערוץ עד שמתבצעת קריאת ההגדרה הראשונה.