mjpeg — gravação mjpeg¶
O módulo mjpeg é utilizado para gravação de vídeo no formato mjpeg. Use-o para gravar clipes de vídeo longos como dados de imagem comprimidos. Use gif para clipes curtos.
Exemplo de utilização:
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 pode adicionar fotogramas.
pathé o caminho no sistema de ficheiros onde a gravação mjpeg será guardada.widthé a resolução horizontal do ficheiro mjpeg. Por omissão, utiliza a largura do framebuffer principal quando não especificado.heighté a resolução vertical do ficheiro mjpeg. Por omissão, utiliza a altura do framebuffer principal quando não especificado.- is_closed() bool¶
Devolve
Truese o ficheiro foi fechado. Não é possível escrever mais dados num ficheiro fechado.
- 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 na criação do ficheiro. É aceite qualquer formato de imagem; este método descomprime, redimensiona/converte e recomprime conforme necessário.roié o tuplo retângulo de região de interesse(x, y, w, h)deimagea copiar. Por omissão, corresponde à imagem inteira.rgb_channelé o canal RGB (0=R, 1=G, 2=B) a extrair de uma imagem fonte RGB565 e renderizar em escala de cinzentos.-1(predefinição) desativa a extração de canal.alpha(0-255) controla a quantidade da imagem fonte a misturar no destino.255é opaco; valores inferiores misturam com um fundo preto;0resulta num fotograma preto.color_paletteé uma enumeração de paleta de cores (p. ex.image.PALETTE_RAINBOW) ou uma imagem RGB565 de 256 pixels usada como tabela de consulta de cores aplicada ao valor em escala de cinzentos da imagem fonte. Aplicada após a extração dergb_channel.alpha_paletteé uma imagem em escala de cinzentos de 256 pixels usada como tabela de consulta de alfa que modulaalphapor pixel fonte com base no seu valor em escala de cinzentos.255é opaco;0é transparente. Aplicada após a extração dergb_channel.hinté um OR lógico de:image.AREA: Usar escalonamento por área ao reduzir.image.BILINEAR: Usar escalonamento bilinear.image.BICUBIC: Usar escalonamento bicúbico.image.CENTER: Centrar a imagem no destino.image.HMIRROR: Espelhar a imagem horizontalmente.image.VFLIP: Inverter a imagem verticalmente.image.TRANSPOSE: Transpor a imagem (trocar x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Aplicarrgb_channelantes do escalonamento.image.APPLY_COLOR_PALETTE_FIRST: Aplicarcolor_paletteantes do escalonamento.image.SCALE_ASPECT_KEEP: Escalar para caber no destino.image.SCALE_ASPECT_EXPAND: Escalar para preencher o destino (corta).image.SCALE_ASPECT_IGNORE: Escalar para preencher o destino (estica).image.ROTATE_90: Rodar 90 graus (VFLIP | TRANSPOSE).image.ROTATE_180: Rodar 180 graus (HMIRROR | VFLIP).image.ROTATE_270: Rodar 270 graus (HMIRROR | TRANSPOSE).
quality(0-100) é a qualidade de compressão JPEG utilizada para imagens fonte não 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().