编解码与推流
拿到图像帧后,常常需要把它 送出开发板:在主机上预览、录制,或实时推流。 ESP-VISION 提供多种编解码与传输方式,各自适用于不同场景。
静态图像编码:JPEG 与 PNG
image.Image.to_jpeg()(及其别名 image.Image.compress())把一帧编码为 JPEG。JPEG 有损:quality 关键字(1-100)在大小与画质之间权衡,subsampling 控制色度被压缩的程度(JPEG_SUBSAMPLING_420 最小,444 画质最好)。带硬件 JPEG 编码器的板会进行硬件卸载,否则使用软件编码器(esp_new_jpeg)。
当前固件未启用 PNG 解码器或编码器。通过 image.Image(path) 加载 PNG 时立即抛出 OSError;image.Image.to_png() 和将未压缩图像保存为 .png 时抛出 RuntimeError。请在上传前将 PNG 素材转换为 JPEG。
录制序列:ImageIO
imageio.ImageIO 录制一 序列 帧并保留帧间时间,从而以原始速度回放。 文件流 在存储上写容器文件;内存流 把帧保存在预分配的 PSRAM 缓冲中,以便快速 采集与回放。详见 image.ImageIO – 图像流。
主机预览:USB CDC
在开发期间,看到 摄像头画面最快的方式是 image.Image.flush(),它通过 EV-MUX preview.frame 通道把当前帧作为二进制 JPEG 推送到主机,由配套的主机工具解码并显示。该通路无需 Wi-Fi、无需 SD 卡,是脚本迭代时默认的反馈回路。