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-файлу. За замовчуванням дорівнює висоті основного кадрового буфера, якщо не вказано.- is_closed() bool¶
Повертає
True, якщо файл закрито. У закритий файл більше не можна записувати дані.
- 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— побітове АБО з: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().