简介

MJPEG(Motion Joint Photographic Experts Group)是一种视频压缩格式,其中每一帧图像都分别使用JPEG编码,由于编码兼容JPEG,所以我们可以使用MJPEG编码器将yuv图像数据转换成我们常见的JPG格式图片。

示例

import venc 
#打开YUV测试文件,像素为320x240
f = open("/root/app/res/image.yuv", "rb+")
yuv = f.read()
f.close()

#初始化编码器
venc.create(venc.type.MJPEG, venc.fmt.QVGA)#固件目前支持三种图片尺寸编码:720P,VGA和QVGA
ret, size, data = venc.send(yuv)#成功则接收数据存在data,并将数据长度存在size
#ret返回True表示成功,我们进行保存
if ret:
    #保存
    img = open("/root/app/res/image.jpg", "wb+")
    img.write(data)
    img.close()
    print("image save successful.")
venc.destroy()

通过MJPEG编码器,我们就能得到JPG格式图片,通过FTP工具将保存的图片传输到电脑上即可查看。

延伸

结合之前获取摄像头得到的YUV数据,我们可以将两个功能结合完成图片抓拍。

import sensor
import venc 
id = sensor.id.IMX307    #对应选择自己所接入的sensor型号,这里提供IMX307和GC2053
fmt = sensor.fmt.QVGA    #这里提供三种图像尺寸:HD(1280X720)、VGA(640X480)和QVGA(320X240)
sensor.init(id, fmt)
ret, size, yuv = sensor.yuv420()   #返回三个值,对应的顺序是结果、图像大小、图像数据
if ret:
    venc.create(venc.type.MJPEG, venc.fmt.QVGA)
    res, size, data = venc.send(yuv)
    if res:
        #保存
        img = open("/root/app/res/output.jpg", "wb+")
        img.write(data)
        img.close()
        print("image save successful.")
    venc.destroy()
sensor.destroy()
文档更新时间: 2020-12-09 09:45   作者:Tony