mjpeg — mjpeg-Aufnahme¶
Das Modul mjpeg wird für mjpeg-Aufnahmen verwendet. Damit lassen sich lange Videoclips als komprimierte Bilddaten aufzeichnen. Verwenden Sie gif für kurze Clips.
Anwendungsbeispiel:
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)¶
Erstellt ein Mjpeg-Objekt, dem Sie Einzelbilder hinzufügen können.
pathist der Dateisystempfad, unter dem die mjpeg-Aufnahme gespeichert wird.widthist die horizontale Auflösung der mjpeg-Datei. Standardmäßig die Breite des Haupt-Framebuffers, wenn nicht angegeben.heightist die vertikale Auflösung der mjpeg-Datei. Standardmäßig die Höhe des Haupt-Framebuffers, wenn nicht angegeben.- is_closed() bool¶
Gibt
Truezurück, wenn die Datei geschlossen wurde. In eine geschlossene Datei können keine weiteren Daten geschrieben werden.
- 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¶
Hängt
imagean die mjpeg-Aufnahme an. Das Bild wird unter Beibehaltung des Seitenverhältnisses automatisch auf die beim Erstellen der Datei angegebene Auflösung skaliert. Jedes Bildformat wird akzeptiert; diese Methode dekomprimiert, skaliert/konvertiert und komprimiert das Bild nach Bedarf erneut.roiist das Rechteck-Tupel(x, y, w, h)des Interessensbereichs (ROI) vonimage, das kopiert werden soll. Standardmäßig das gesamte Bild.rgb_channelist der RGB-Kanal (0=R, 1=G, 2=B), der aus einem RGB565-Quellbild extrahiert und in Graustufen gerendert werden soll.-1(Standard) deaktiviert die Kanalextraktion.alpha(0-255) steuert, wie viel des Quellbilds in das Zielbild eingeblendet wird.255ist deckend; niedrigere Werte mischen das Bild mit einem schwarzen Hintergrund;0ergibt ein schwarzes Einzelbild.color_paletteist entweder ein Farbpaletten-Enum (z. B.image.PALETTE_RAINBOW) oder ein 256-Pixel-RGB565-Bild, das als Farb-Lookup-Tabelle auf den Graustufenwert des Quellbilds angewendet wird. Wird nach derrgb_channel-Extraktion angewendet.alpha_paletteist ein 256-Pixel-Graustufenbild, das als Alpha-Lookup-Tabelle verwendet wird undalphapro Quellpixel anhand seines Graustufenwerts moduliert.255ist deckend;0ist transparent. Wird nach derrgb_channel-Extraktion angewendet.hintist eine logische ODER-Verknüpfung von:image.AREA: Beim Verkleinern Flächenskalierung verwenden.image.BILINEAR: Bilineare Skalierung verwenden.image.BICUBIC: Bikubische Skalierung verwenden.image.CENTER: Das Bild im Ziel zentrieren.image.HMIRROR: Das Bild horizontal spiegeln.image.VFLIP: Das Bild vertikal spiegeln.image.TRANSPOSE: Das Bild transponieren (x/y vertauschen).image.EXTRACT_RGB_CHANNEL_FIRST:rgb_channelvor dem Skalieren anwenden.image.APPLY_COLOR_PALETTE_FIRST:color_palettevor dem Skalieren anwenden.image.SCALE_ASPECT_KEEP: So skalieren, dass das Bild in das Ziel passt.image.SCALE_ASPECT_EXPAND: So skalieren, dass das Ziel gefüllt wird (beschneidet).image.SCALE_ASPECT_IGNORE: So skalieren, dass das Ziel gefüllt wird (verzerrt).image.ROTATE_90: Um 90 Grad drehen (VFLIP | TRANSPOSE).image.ROTATE_180: Um 180 Grad drehen (HMIRROR | VFLIP).image.ROTATE_270: Um 270 Grad drehen (HMIRROR | TRANSPOSE).
quality(0-100) ist die JPEG-Kompressionsqualität, die für Nicht-JPEG-Quellbilder verwendet wird.
- 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 für
Mjpeg.add_frame().