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 查找表,根据每个源像素的灰度值调制其alpha。255为不透明;0为透明。在rgb_channel提取之后应用。hint是以下各项的逻辑或: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()的别名。