מחלקת 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. ברירת המחדל תלוית-לוח.- 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של תמונת הקלט ברמת הפיקסל הבודד.hintOR לוגי של הדגלים:image.AREA: השתמש בקנה מידה לפי שטח בעת הקטנה.image.BILINEAR: השתמש בקנה מידה דו-קווי (bilinear).image.BICUBIC: השתמש בקנה מידה דו-קוּבּי (bicubic).image.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).
- clear(display_off: bool = False) None¶
מנקה את המסך לשחור.
display_offמתקבל לצורך תאימות API עם מחלקות צג אחרות ומתעלמים ממנו.
- ioctl(cmd: int, *args) object¶
נקודת כניסה גנרית של ioctl.
העבר
display.IOCTL_CHANNELכ-cmdכדי להגדיר או לקבל את ערוץ השידור של ה-Wireless TV Shield. עם ארגומנט שני (1-8) הערוץ נקבע; ללא ארגומנט שני מוחזר הערוץ הנוכחי. לא נבחר אף ערוץ עד שמתבצעת קריאת ההגדרה הראשונה.