mjpeg — Gravação mjpeg

O módulo mjpeg é usado para gravação mjpeg. Use-o para gravar clipes de vídeo longos como dados de imagem comprimidos. Use gif para clipes curtos.

Exemplo de uso:

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()

classe Mjpeg – Gravador Mjpeg

class mjpeg.Mjpeg(path: str, width: int | None = None, height: int | None = None)

Cria um objeto Mjpeg ao qual você pode adicionar quadros.

path é o caminho no sistema de arquivos onde a gravação mjpeg será salva.

width é a resolução horizontal do arquivo mjpeg. Por padrão, assume a largura do frame buffer principal quando não especificado.

height é a resolução vertical do arquivo mjpeg. Por padrão, assume a altura do frame buffer principal quando não especificado.

is_closed() bool

Retorna True se o arquivo tiver sido fechado. Nenhum dado adicional pode ser gravado em um arquivo fechado.

width() int

Retorna a resolução horizontal do arquivo mjpeg.

height() int

Retorna a resolução vertical do arquivo mjpeg.

count() int

Retorna o número de quadros gravados no arquivo mjpeg.

size() int

Retorna o tamanho do arquivo mjpeg em bytes.

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

Acrescenta image à gravação mjpeg. A imagem é automaticamente redimensionada, preservando a proporção, para a resolução especificada quando o arquivo foi criado. Qualquer formato de imagem é aceito; este método descomprime, redimensiona/converte e recomprime conforme necessário.

roi é a tupla do retângulo da região de interesse (x, y, w, h) de image a copiar. Por padrão, é a imagem inteira.

rgb_channel é o canal RGB (0=R, 1=G, 2=B) a extrair de uma imagem de origem RGB565 e renderizar em escala de cinza. -1 (padrão) desabilita a extração de canal.

alpha (0-255) controla quanto da imagem de origem é mesclado no destino. 255 é opaco; valores menores mesclam com um fundo preto; 0 resulta em um quadro preto.

color_palette é um enum de paleta de cores (por exemplo, image.PALETTE_RAINBOW) ou uma imagem RGB565 de 256 pixels usada como tabela de consulta de cores aplicada ao valor em escala de cinza da imagem de origem. Aplicado após a extração de rgb_channel.

alpha_palette é uma imagem em escala de cinza de 256 pixels usada como tabela de consulta de alpha que modula alpha por pixel de origem com base em seu valor em escala de cinza. 255 é opaco; 0 é transparente. Aplicado após a extração de rgb_channel.

hint é um OR lógico de:

quality (0-100) é a qualidade de compressão JPEG usada para imagens de origem que não sejam 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

Alias para Mjpeg.add_frame().

sync() None

Descarrega o arquivo mjpeg para o disco mantendo-o aberto para gravações adicionais. Chame periodicamente para garantir que os dados sejam salvos.

close() None

Finaliza a gravação mjpeg. Deve ser chamado uma vez que a gravação esteja concluída para tornar o arquivo visualizável.