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()
класс 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().