一、简介
xr872自带硬件jpeg编码,这无疑对网络传输图片比较友好,不过xr872只对YUV格式进行编码,比较单一,不过并不影响,一般摄像头都可以直接选择输出YUV还是RGB格式。
二、摄像头例程分析
官方自带例程:./example/jpeg
2.1 JPEG介绍
online:每16行编码依次 ,不会再输出原始CSI数据
offline :一帧图像接收完后再编码
XR872JPEG 模块是一款高性能、低功耗、较少资源依赖的编码器,其具备的属性如下。
支持 online 模式 640*480@60fps, offline 模式 640*480@30fps
支持 online 模式 1280*720@40fps, offline 模式 1280*720@20fps
支持最大分辨率为 1920*1088online/offline 编码
支持 1/2 缩小(scaler)后编码,支持抠图(cropwin)后编码
online 模式支持分块输出功能,可减小 sram 开销,并提高带宽利用率
支持非常规分辨率的 online/offline(如:192*192,304*224)编码
支持常规分辨率图像的 online/offline 编码
2.2 例程介绍
static CAMERA_Cfg camera_cfg = {
.jpeg_cfg.jpeg_en = 1,
.jpeg_cfg.quality = 64,//JPEG 图像的质量等级(0~99)
.jpeg_cfg.jpeg_clk = 0, //no use
#if JPEG_MEMPART_EN
.jpeg_cfg.memPartEn = 1,//JPEG分块模式的使能
.jpeg_cfg.memPartNum = JPEG_MEM_BLOCK2, //0->2 part,1->4 part,2->8 part JPEG分块模式的块数量
#else
.jpeg_cfg.memPartEn = 0,
.jpeg_cfg.memPartNum = 0,
#endif
.jpeg_cfg.jpeg_mode = JPEG_ONLINE_EN ? JPEG_MOD_ONLINE : JPEG_MOD_OFFLINE, //编码工作模式选择
.csi_cfg.csi_clk = 24000000, // no use
/* sensor config */
.sensor_cfg.i2c_id = IMAGE_SENSOR_I2CID, //CSI接口IIC
.sensor_cfg.pwcfg.Pwdn_Port = SENSOR_POWERDOWN_PORT, //断电端口号
.sensor_cfg.pwcfg.Reset_Port = SENSOR_RESET_PORT, //复位端口号
.sensor_cfg.pwcfg.Pwdn_Pin = SENSOR_POWERDOWN_PIN, //断电引脚
.sensor_cfg.pwcfg.Reset_Pin = SENSOR_RESET_PIN, //复位引脚
.sensor_cfg.pixel_size.width = IMAGE_WIDTH,//640,
.sensor_cfg.pixel_size.height = IMAGE_HEIGHT,//480,
.sensor_cfg.pixel_outfmt = YUV422_YUYV, / /csi输出格式
.sensor_func.init = SENSOR_FUNC_INIT, //csi初始化函数
.sensor_func.deinit = SENSOR_FUNC_DEINIT, //csi反初始化函数
.sensor_func.ioctl = SENSOR_FUNC_IOCTL, //csi控制
};
static int camera_mem_create(CAMERA_JpegCfg *jpeg_cfg, CAMERA_Mgmt *mgmt) //根据上述结构体的配置进行内存分配
static int camera_init() //csi与jpeg的初始化
void main()
{
//挂载TF卡、初始化摄像头以及jpeg
//获取一帧图片
//保存图片到TF卡 如果是online则只保存jpeg图,反之保存一张YUV以及JPG图
//结束
}
注释:.jpeg_cfg.memPartEn = 1,//JPEG分块模式的使能
Online 分块模式与整帧模式的区别在于,分块模式可以在 JPEG 编码输出数据量达到设定值(例如 2KB/4KB) 后产生中断,并且可以在一帧编码过程中循环使用编码输出空间,例如只分配 8KB 的编码输出空间,而一 帧图像编码数据有 20KB,则在第一次写满 8KB 后, JPEG 将会从这 8KB 的首地址开始存储,循环使用, 故需要软件配合将之前的数据读走,否则之前的数据会被覆盖
三、图传
xr872自带wifi,故可以将图片进行在线上传,可以上传自己的服务器,亦可以上传到各大公共云平台进行图像识别等应用。具体待实践......