mjpeg — nagrywanie mjpeg¶
Moduł mjpeg służy do nagrywania mjpeg. Używaj go do nagrywania długich klipów wideo jako skompresowanych danych obrazu. W przypadku krótkich klipów używaj gif.
Przykład użycia:
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 – rejestrator Mjpeg¶
- class mjpeg.Mjpeg(path: str, width: int | None = None, height: int | None = None)¶
Tworzy obiekt Mjpeg, do którego można dodawać ramki.
pathto ścieżka w systemie plików, pod którą zostanie zapisane nagranie mjpeg.widthto rozdzielczość pozioma pliku mjpeg. Domyślnie przyjmuje szerokość głównego framebuffera, gdy nie jest określona.heightto rozdzielczość pionowa pliku mjpeg. Domyślnie przyjmuje wysokość głównego framebuffera, gdy nie jest określona.- is_closed() bool¶
Zwraca
True, jeśli plik został zamknięty. Do zamkniętego pliku nie można już zapisywać danych.
- 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¶
Dołącza
imagedo nagrania mjpeg. Obraz jest automatycznie skalowany z zachowaniem proporcji do rozdzielczości określonej podczas tworzenia pliku. Akceptowany jest dowolny format obrazu; ta metoda w razie potrzeby dekompresuje, skaluje/konwertuje i ponownie kompresuje.roito krotka prostokąta obszaru zainteresowania (ROI)(x, y, w, h)obrazuimagedo skopiowania. Domyślnie obejmuje cały obraz.rgb_channelto kanał RGB (0=R, 1=G, 2=B) do wyodrębnienia ze źródłowego obrazu RGB565 i wyrenderowania w skali szarości.-1(domyślnie) wyłącza wyodrębnianie kanału.alpha(0-255) kontroluje, jaka część obrazu źródłowego zostanie wmieszana w obraz docelowy.255oznacza nieprzezroczystość; niższe wartości mieszają z czarnym tłem;0daje czarną ramkę.color_paletteto wyliczenie palety kolorów (np.image.PALETTE_RAINBOW) lub 256-pikselowy obraz RGB565 używany jako tablica przeglądowa kolorów na podstawie wartości skali szarości obrazu źródłowego. Stosowane po wyodrębnieniurgb_channel.alpha_paletteto 256-pikselowy obraz w skali szarości używany jako tablica przeglądowa alfa modulującaalphadla każdego piksela źródłowego na podstawie jego wartości skali szarości.255oznacza nieprzezroczystość;0przezroczystość. Stosowane po wyodrębnieniurgb_channel.hintto logiczne LUB:image.AREA: Użyj skalowania obszarowego przy zmniejszaniu.image.BILINEAR: Użyj skalowania dwuliniowego.image.BICUBIC: Użyj skalowania dwusześciennego.image.CENTER: Wyśrodkuj obraz na obrazie docelowym.image.HMIRROR: Odbij obraz w poziomie.image.VFLIP: Odwróć obraz w pionie.image.TRANSPOSE: Transponuj obraz (zamień x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Zastosujrgb_channelprzed skalowaniem.image.APPLY_COLOR_PALETTE_FIRST: Zastosujcolor_paletteprzed skalowaniem.image.SCALE_ASPECT_KEEP: Skaluj tak, aby zmieścić wewnątrz obrazu docelowego.image.SCALE_ASPECT_EXPAND: Skaluj tak, aby wypełnić obraz docelowy (przycina).image.SCALE_ASPECT_IGNORE: Skaluj tak, aby wypełnić obraz docelowy (rozciąga).image.ROTATE_90: Obróć o 90 stopni (VFLIP | TRANSPOSE).image.ROTATE_180: Obróć o 180 stopni (HMIRROR | VFLIP).image.ROTATE_270: Obróć o 270 stopni (HMIRROR | TRANSPOSE).
quality(0-100) to jakość kompresji JPEG używana dla źródłowych obrazów innych niż 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 dla
Mjpeg.add_frame().