mjpeg — mjpeg-opname

De mjpeg-module wordt gebruikt voor mjpeg-opname. Gebruik deze om lange videofragmenten op te nemen als gecomprimeerde afbeeldingsdata. Gebruik gif voor korte fragmenten.

Voorbeeldgebruik:

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-recorder

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

Maakt een Mjpeg-object aan waaraan je frames kunt toevoegen.

path is het bestandssysteempad waar de mjpeg-opname wordt opgeslagen.

width is de horizontale resolutie van het mjpeg-bestand. Standaard de breedte van de hoofd-framebuffer wanneer niet opgegeven.

height is de verticale resolutie van het mjpeg-bestand. Standaard de hoogte van de hoofd-framebuffer wanneer niet opgegeven.

is_closed() bool

Geeft True terug als het bestand is gesloten. Er kan geen data meer naar een gesloten bestand worden geschreven.

width() int

Geeft de horizontale resolutie van het mjpeg-bestand terug.

height() int

Geeft de verticale resolutie van het mjpeg-bestand terug.

count() int

Geeft het aantal frames terug dat naar het mjpeg-bestand is geschreven.

size() int

Geeft de grootte van het mjpeg-bestand in bytes terug.

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

Voegt image toe aan de mjpeg-opname. De afbeelding wordt automatisch geschaald met behoud van de beeldverhouding naar de resolutie die bij het aanmaken van het bestand is opgegeven. Elk afbeeldingsformaat wordt geaccepteerd; deze methode decomprimeert, schaalt/converteert en hercomprimeert zo nodig.

roi is de tuple van het aandachtsgebied-rechthoek (x, y, w, h) van image om te kopiëren. Standaard de hele afbeelding.

rgb_channel is het RGB-kanaal (0=R, 1=G, 2=B) dat uit een RGB565-bronafbeelding wordt geëxtraheerd en in grijswaarden wordt weergegeven. -1 (standaard) schakelt kanaalextractie uit.

alpha (0-255) bepaalt hoeveel van de bronafbeelding in de bestemming wordt gemengd. 255 is ondoorzichtig; lagere waarden mengen met een zwarte achtergrond; 0 resulteert in een zwart frame.

color_palette is ofwel een kleurenpalet-enum (bijv. image.PALETTE_RAINBOW) of een RGB565-afbeelding van 256 pixels die wordt gebruikt als kleuropzoektabel op de grijswaarde van de bronafbeelding. Toegepast na rgb_channel-extractie.

alpha_palette is een grijswaardenafbeelding van 256 pixels die wordt gebruikt als alfa-opzoektabel die alpha per bronpixel moduleert op basis van diens grijswaarde. 255 is ondoorzichtig; 0 is transparant. Toegepast na rgb_channel-extractie.

hint is een logische OR van:

quality (0-100) is de JPEG-compressiekwaliteit die wordt gebruikt voor niet-JPEG-bronafbeeldingen.

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 voor Mjpeg.add_frame().

sync() None

Spoelt het mjpeg-bestand naar schijf terwijl het open blijft voor verdere schrijfacties. Roep periodiek aan om ervoor te zorgen dat data wordt opgeslagen.

close() None

Rondt de mjpeg-opname af. Moet eenmaal worden aangeroepen zodra de opname voltooid is om het bestand bekijkbaar te maken.