الصنف TVDisplay -- مشغل درع TV¶
يقود الصنف TVDisplay درع OpenMV TV Shield، الذي يحوّل مخزن إطارات RGB565 إلى إشارة فيديو NTSC مركّبة (352x240، 60 حقلًا/ثانية متشابكة) مناسبة لأي تلفاز أو شاشة فيديو تناظرية.
يُدعم نوعان من الدروع:
درع TV Shield السلكي، الذي يكشف عن الإشارة المركّبة على مقبس RCA واحد.
درع Wireless TV Shield اللاسلكي، الذي يُغذّي الإشارة نفسها إلى مرسل فيديو تناظري بتردد 2.4 جيجاهرتز. يُختار قناة المستقبل (1--8) أثناء التشغيل عبر
ioctl()معdisplay.IOCTL_CHANNEL؛ ولا تُختار أي قناة حتى يُجرى ذلك الاستدعاء.
الدقة والتأطير ثابتان -- لا يأخذ TVDisplay وسيطة framesize. تُعرض الإطارات بتمرير image.Image إلى write()، التي تتعامل داخليًا مع التحجيم ومنطقة الاهتمام واللوحة وتحويلات الاتجاه.
مثال على الاستخدام:
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 فإنها تجعل تحديثات الشاشة غير حاجزة على حساب ثلاثة أضعاف حجم الشاشة في RAM. القيمة الافتراضية تعتمد على اللوحة.- deinit() None¶
تحرّر دبابيس الإدخال/الإخراج وذاكرة 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يمكن أن تكون تعداد لوحة ألوان أو صورة RGB565 بإجمالي 256 بكسل تُستخدم كجدول بحث للألوان على قيمة تدرج الرمادي للصورة المدخلة.alpha_paletteإذا لم تكن-1يمكن أن تكون صورة GRAYSCALE بإجمالي 256 بكسل تُستخدم كلوحة ألفا تُعدّل قيمةalphaللصورة المدخلة على مستوى كل بكسل.hintهو OR منطقي للأعلام:image.AREA: استخدام تحجيم المساحة عند التصغير.image.BILINEAR: استخدام التحجيم ثنائي الخط.image.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مقبول للتوافق مع واجهة أصناف العرض الأخرى ويُتجاهل.
- ioctl(cmd: int, *args) object¶
نقطة دخول ioctl العامة.
مرّر
display.IOCTL_CHANNELكـcmdلضبط أو الحصول على قناة بث درع TV اللاسلكي. مع وسيطة ثانية (1-8) تُضبط القناة؛ وبدون وسيطة ثانية تُعاد القناة الحالية. لا تُختار أي قناة حتى يُجرى أول استدعاء ضبط.