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は 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()のエイリアスです。