关于OV7670摄像头的分辨率设置
2015-03-22 19:40
543 查看
关于OV7670摄像头的分辨率设置
最近一直在纠结如何把OV7670输出的图片分辨率缩小,以减少数据量来适应数据的传输,在网上看了好多也没有关于寄存器的具体设置,最终又读了几遍数据手册,加上网友们写的帖子的启发,总结出如下结论,希望大家批评指正。
Ov7670的寄存器中跟分辨率有关的寄存器主要是一下几个:0x17HSTART输出格式-行频开始高八位(低三位在HREF[2:0])0x18HSTOP输出格式-行频结束高八位(低三位在HREF[5:3])0x19VSTRT输出格式-场频开始高八位(低二位在VREF[1:0])0x1AVSTOP输出格式-场频结束高八位(低二位在VREF[3:2])0x03VREF位[3:2]VREF结束的低两位(高八位见VSTOP[7:0]
位[1:0]VREF开始的低两位(高八位见VSTOP[7:0]
0x32HREF读写HREF控制
位[5:3]:HREF结束的低3位(高8位在HSTOP)位[2:0]:HREF结束的低3位(高8位在HSTOP)
网上给的一般的设置方式是这样的:QVGARGB565320*240
这样我们就可以写一个简单的函数来设置OV7670的分辨率了
输入图像的行起始点,场起始点,宽度,高度计算得到相应寄存器的值编译环境:keilmdk
voidOV7670_config_window(u16startx,u16starty,u16width,u16height){
u16endx=(startx+width*2)%784;u16endy=(starty+height*2);u8x_reg,y_reg;u8state,temp;
state=rdOV7670Reg(0x32,&x_reg);x_reg&=0xC0;
state=rdOV7670Reg(0x03,&y_reg);y_reg
&=0xF0;
//设置HREF
temp=x_reg|((endx&0x7)<<3)|(startx&0x7);state=wrOV7670Reg(0x32,temp);temp=(startx&0x7F8)>>3;
state=wrOV7670Reg(0x17,temp);temp=(endx&0x7F8)>>3;
state=wrOV7670Reg(0x18,temp);
//设置VREF
temp=y_reg|((endy&0x3)<<2)|(starty&0x3);state=wrOV7670Reg(0x03,temp);temp=(starty&0x3FC)>>2;
state=wrOV7670Reg(0x19,temp);temp=(endy&0x3FC)>>2;
state=wrOV7670Reg(0x1A,temp);
}
最近一直在纠结如何把OV7670输出的图片分辨率缩小,以减少数据量来适应数据的传输,在网上看了好多也没有关于寄存器的具体设置,最终又读了几遍数据手册,加上网友们写的帖子的启发,总结出如下结论,希望大家批评指正。
Ov7670的寄存器中跟分辨率有关的寄存器主要是一下几个:0x17HSTART输出格式-行频开始高八位(低三位在HREF[2:0])0x18HSTOP输出格式-行频结束高八位(低三位在HREF[5:3])0x19VSTRT输出格式-场频开始高八位(低二位在VREF[1:0])0x1AVSTOP输出格式-场频结束高八位(低二位在VREF[3:2])0x03VREF位[3:2]VREF结束的低两位(高八位见VSTOP[7:0]
位[1:0]VREF开始的低两位(高八位见VSTOP[7:0]
0x32HREF读写HREF控制
位[5:3]:HREF结束的低3位(高8位在HSTOP)位[2:0]:HREF结束的低3位(高8位在HSTOP)
网上给的一般的设置方式是这样的:QVGARGB565320*240
这样我们就可以写一个简单的函数来设置OV7670的分辨率了
输入图像的行起始点,场起始点,宽度,高度计算得到相应寄存器的值编译环境:keilmdk
voidOV7670_config_window(u16startx,u16starty,u16width,u16height){
u16endx=(startx+width*2)%784;u16endy=(starty+height*2);u8x_reg,y_reg;u8state,temp;
state=rdOV7670Reg(0x32,&x_reg);x_reg&=0xC0;
state=rdOV7670Reg(0x03,&y_reg);y_reg
&=0xF0;
//设置HREF
temp=x_reg|((endx&0x7)<<3)|(startx&0x7);state=wrOV7670Reg(0x32,temp);temp=(startx&0x7F8)>>3;
state=wrOV7670Reg(0x17,temp);temp=(endx&0x7F8)>>3;
state=wrOV7670Reg(0x18,temp);
//设置VREF
temp=y_reg|((endy&0x3)<<2)|(starty&0x3);state=wrOV7670Reg(0x03,temp);temp=(starty&0x3FC)>>2;
state=wrOV7670Reg(0x19,temp);temp=(endy&0x3FC)>>2;
state=wrOV7670Reg(0x1A,temp);
}
相关文章推荐
- 【计算机视觉】关于用opencv 设置摄像头读分辨率问题的若干说明
- 关于wince6.0 摄像头驱动分辨率设置,尤其是scaler功能使用的认识
- 【调试】关于300W 摄像头OV3640 实现动态分辨率调整的问题
- 关于DirectShow中摄像头的帧率设置
- 摄像头ov2685中关于sensor id 设置的相关的寄存器地址
- 使用opencv249设置摄像头分辨率
- OpenCV设置摄像头分辨率及全屏显示
- 关于windows2008重新启动需要重新设置分辨率的问题
- Opencv设置摄像头分辨率
- opencv 设置摄像头分辨率
- 关于RK3066&RK3188 BOX 4.4.2 SDK,外接USB摄像头,像素设置为500万,拍照时右下角出现小块长方形色块。
- Unity3D 设置摄像头的分辨率,比如罗技
- OpenCV设置摄像头的分辨率(转-根据自己的改写)
- 关于Linux系统中的分辨率设置和vim配色方案
- 摄像头ov2685中关于sensor id 设置的相关的寄存器地址
- wince6.0+s3c6410摄像头驱动修改 (ov9650预览分辨率设置)
- OpenCV对摄像头分辨率的设置
- OpenCV设置摄像头的分辨率
- Python-OpenCV设置摄像头分辨率
- 关于Android摄像头操作设置的工具类