mjpeg --- تسجيل mjpeg¶
تُستخدَم الوحدة mjpeg لتسجيل mjpeg. استخدمها لتسجيل مقاطع فيديو طويلة كبيانات صور مضغوطة. استخدم gif للمقاطع القصيرة.
مثال على الاستخدام:
import csi
import mjpeg
import time
# Setup camera.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000)
# Create the mjpeg object.
m = mjpeg.Mjpeg("example.mjpeg")
# Record for 20 seconds.
start = time.ticks_ms()
while time.ticks_diff(time.ticks_ms(), start) < 20000:
m.add_frame(csi0.snapshot())
# Finalize.
m.close()
class Mjpeg -- مُسجِّل Mjpeg¶
- class mjpeg.Mjpeg(path: str, width: int | None = None, height: int | None = None)¶
إنشاء كائن Mjpeg يمكنك إضافة الإطارات إليه.
pathهو مسار نظام الملفات لحفظ تسجيل mjpeg فيه.widthهو الدقة الأفقية لملف mjpeg. القيمة الافتراضية هي عرض مخزن الإطارات الرئيسي إن لم يُحدَّد.heightهو الدقة الرأسية لملف mjpeg. القيمة الافتراضية هي ارتفاع مخزن الإطارات الرئيسي إن لم يُحدَّد.- add_frame(image: image.Image, 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, quality: int = 90) None¶
إلحاق
imageبتسجيل mjpeg. تُقاس الصورة تلقائياً مع الحفاظ على نسبة العرض إلى الارتفاع لتطابق الدقة المحدَّدة عند إنشاء الملف. يُقبَل أي تنسيق صورة؛ تقوم هذه الدالة بفك الضغط والقياس/التحويل وإعادة الضغط حسب الحاجة.roiهو مجموعة مستطيل منطقة الاهتمام(x, y, w, h)منimageالمراد نسخها. القيمة الافتراضية هي الصورة بأكملها.rgb_channelهو قناة RGB (0=R، 1=G، 2=B) المراد استخراجها من صورة مصدر RGB565 وعرضها بتدرج الرمادي. القيمة-1(الافتراضية) تعطّل استخراج القناة.alpha(0-255) تتحكم في مقدار صورة المصدر المراد مزجها في الوجهة. القيمة255معتمة؛ والقيم الأقل تمزج مع خلفية سوداء؛ والقيمة0تنتج إطاراً أسود.color_paletteهو إما تعداد لوحة ألوان (مثلimage.PALETTE_RAINBOW) أو صورة RGB565 بحجم 256 بكسل تُستخدَم كجدول بحث للألوان على قيمة تدرج الرمادي لصورة المصدر. يُطبَّق بعد استخراجrgb_channel.alpha_paletteهو صورة بتدرج الرمادي بحجم 256 بكسل تُستخدَم كجدول بحث لقناة ألفا يضبطalphaلكل بكسل مصدر بناءً على قيمة تدرج الرمادي الخاصة به. القيمة255معتمة؛ والقيمة0شفافة. يُطبَّق بعد استخراجrgb_channel.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).
quality(0-100) هي جودة ضغط JPEG المستخدَمة لصور المصدر غير JPEG.
- write(image: image.Image, 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, quality: int = 90) None¶
اسم بديل لـ
Mjpeg.add_frame().