mjpeg --- mjpeg 錄製¶
mjpeg 模組用於 mjpeg 錄製。使用它可將長片段錄製為壓縮的影像資料。短片段請使用 gif。
使用範例::
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 錄製器¶
- class mjpeg.Mjpeg(path: str, width: int | None = None, height: int | None = None)¶
建立一個可供你新增影格的 Mjpeg 物件。
path是用於儲存 mjpeg 錄製檔的檔案系統路徑。width是 mjpeg 檔案的水平解析度。未指定時,預設為主影格緩衝區寬度。height是 mjpeg 檔案的垂直解析度。未指定時,預設為主影格緩衝區高度。- 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¶
將
image附加到 mjpeg 錄製中。影像會在保持長寬比的情況下自動縮放至建立檔案時所指定的解析度。可接受任何影像格式;此方法會依需要解壓縮、縮放/轉換並重新壓縮。roi是要複製的image感興趣區域矩形元組(x, y, w, h)。預設為整張影像。rgb_channel是要從 RGB565 來源影像中擷取並以灰階呈現的 RGB 通道(0=R、1=G、2=B)。-1(預設)會停用通道擷取。alpha(0-255)控制要將多少來源影像混合到目的地中。255為不透明;較低的值會與黑色背景混合;0會產生黑色影格。color_palette可為色彩調色盤列舉(例如image.PALETTE_RAINBOW),或是一張用作色彩查找表的 256 像素 RGB565 影像,套用於來源影像的灰階值上。在rgb_channel擷取之後套用。alpha_palette是一張用作 alpha 查找表的 256 像素灰階影像,根據每個來源像素的灰階值調節其alpha。255為不透明;0為透明。在rgb_channel擷取之後套用。hint是以下各項的邏輯 OR:image.AREA:縮小時使用區域縮放。image.BILINEAR:使用雙線性縮放。image.BICUBIC:使用雙三次縮放。image.CENTER:將影像置中於目的地。image.HMIRROR:水平鏡像影像。image.VFLIP:垂直翻轉影像。image.TRANSPOSE:轉置影像(交換 x/y)。image.EXTRACT_RGB_CHANNEL_FIRST:在縮放前套用rgb_channel。image.APPLY_COLOR_PALETTE_FIRST:在縮放前套用color_palette。image.SCALE_ASPECT_KEEP:縮放以符合目的地內部。image.SCALE_ASPECT_EXPAND:縮放以填滿目的地(會裁切)。image.SCALE_ASPECT_IGNORE:縮放以填滿目的地(會拉伸)。image.ROTATE_90:旋轉 90 度(VFLIP | TRANSPOSE)。image.ROTATE_180:旋轉 180 度(HMIRROR | VFLIP)。image.ROTATE_270:旋轉 270 度(HMIRROR | TRANSPOSE)。
quality(0-100)是用於非 JPEG 來源影像的 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¶
Mjpeg.add_frame()的別名。