mjpeg — înregistrare mjpeg

Modulul mjpeg este folosit pentru înregistrarea mjpeg. Folosiți-l pentru a înregistra clipuri video lungi sub formă de date de imagine comprimate. Folosiți gif pentru clipuri scurte.

Exemplu de utilizare:

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

clasa Mjpeg – înregistrator Mjpeg

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

Creează un obiect Mjpeg la care puteți adăuga cadre.

path este calea din sistemul de fișiere unde se salvează înregistrarea mjpeg.

width este rezoluția orizontală a fișierului mjpeg. Implicit este lățimea tamponului de cadre (frame buffer) principal când nu este specificată.

height este rezoluția verticală a fișierului mjpeg. Implicit este înălțimea tamponului de cadre (frame buffer) principal când nu este specificată.

is_closed() bool

Returnează True dacă fișierul a fost închis. Într-un fișier închis nu mai pot fi scrise date.

width() int

Returnează rezoluția orizontală a fișierului mjpeg.

height() int

Returnează rezoluția verticală a fișierului mjpeg.

count() int

Returnează numărul de cadre scrise în fișierul mjpeg.

size() int

Returnează dimensiunea fișierului mjpeg în octeți.

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

Adaugă image la înregistrarea mjpeg. Imaginea este scalată automat, păstrând raportul de aspect, la rezoluția specificată la crearea fișierului. Este acceptat orice format de imagine; această metodă decomprimă, scalează/convertește și recomprimă după cum este necesar.

roi este tuplul dreptunghiular al regiunii de interes (x, y, w, h) din image care trebuie copiat. Implicit este întreaga imagine.

rgb_channel este canalul RGB (0=R, 1=G, 2=B) de extras dintr-o imagine sursă RGB565 și de redat în tonuri de gri. -1 (implicit) dezactivează extragerea canalului.

alpha (0-255) controlează cât de mult din imaginea sursă se amestecă în destinație. 255 este opac; valorile mai mici se amestecă cu un fundal negru; 0 produce un cadru negru.

color_palette este fie o enumerare de paletă de culori (de ex. image.PALETTE_RAINBOW), fie o imagine RGB565 de 256 de pixeli folosită ca tabel de căutare de culori pe baza valorii în tonuri de gri a imaginii sursă. Aplicat după extragerea rgb_channel.

alpha_palette este o imagine în tonuri de gri de 256 de pixeli folosită ca tabel de căutare alpha care modulează alpha pentru fiecare pixel sursă în funcție de valoarea sa în tonuri de gri. 255 este opac; 0 este transparent. Aplicat după extragerea rgb_channel.

hint este un SAU logic format din:

quality (0-100) este calitatea de compresie JPEG folosită pentru imaginile sursă 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 pentru Mjpeg.add_frame().

sync() None

Golește fișierul mjpeg pe disc menținându-l deschis pentru scrieri ulterioare. Apelați periodic pentru a vă asigura că datele sunt salvate.

close() None

Finalizează înregistrarea mjpeg. Trebuie apelată odată ce înregistrarea este completă pentru a face fișierul vizualizabil.