mjpeg — enregistrement mjpeg

Le module mjpeg est utilisé pour l’enregistrement mjpeg. Servez-vous-en pour enregistrer de longs clips vidéo sous forme de données d’image compressées. Utilisez gif pour les clips courts.

Exemple d’utilisation

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 – Enregistreur Mjpeg

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

Crée un objet Mjpeg auquel vous pouvez ajouter des trames.

path est le chemin d’accès au système de fichiers où enregistrer l’enregistrement mjpeg.

width est la résolution horizontale du fichier mjpeg. Vaut par défaut la largeur du tampon d’image principal lorsqu’elle n’est pas spécifiée.

height est la résolution verticale du fichier mjpeg. Vaut par défaut la hauteur du tampon d’image principal lorsqu’elle n’est pas spécifiée.

is_closed() bool

Renvoie True si le fichier a été fermé. Plus aucune donnée ne peut être écrite dans un fichier fermé.

width() int

Renvoie la résolution horizontale du fichier mjpeg.

height() int

Renvoie la résolution verticale du fichier mjpeg.

count() int

Renvoie le nombre de trames écrites dans le fichier mjpeg.

size() int

Renvoie la taille du fichier mjpeg en octets.

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

Ajoute image à l’enregistrement mjpeg. L’image est automatiquement mise à l’échelle tout en préservant le rapport d’aspect jusqu’à la résolution spécifiée lors de la création du fichier. Tout format d’image est accepté ; cette méthode décompresse, met à l’échelle/convertit et recompresse selon les besoins.

roi est le tuple rectangulaire de la région d’intérêt (x, y, w, h) de image à copier. Vaut par défaut l’image entière.

rgb_channel est le canal RGB (0=R, 1=G, 2=B) à extraire d’une image source RGB565 et à rendre en niveaux de gris. -1 (valeur par défaut) désactive l’extraction de canal.

alpha (0-255) contrôle la part de l’image source à fondre dans la destination. 255 est opaque ; les valeurs plus faibles se fondent avec un arrière-plan noir ; 0 produit une trame noire.

color_palette est soit une énumération de palette de couleurs (par ex. image.PALETTE_RAINBOW), soit une image RGB565 de 256 pixels utilisée comme table de correspondance des couleurs sur la valeur en niveaux de gris de l’image source. Appliquée après l’extraction rgb_channel.

alpha_palette est une image en niveaux de gris de 256 pixels utilisée comme table de correspondance alpha modulant alpha par pixel source en fonction de sa valeur en niveaux de gris. 255 est opaque ; 0 est transparent. Appliquée après l’extraction rgb_channel.

hint est un OU logique de :

quality (0-100) est la qualité de compression JPEG utilisée pour les images sources non 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 de Mjpeg.add_frame().

sync() None

Vide le fichier mjpeg sur le disque tout en le gardant ouvert pour d’autres écritures. Appelez périodiquement pour garantir que les données sont enregistrées.

close() None

Finalise l’enregistrement mjpeg. Doit être appelée une fois l’enregistrement terminé pour rendre le fichier visualisable.