zoukankan      html  css  js  c++  java
  • 关于OV7670摄像头的分辨率设置

    关于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);

    }

  • 相关阅读:
    HDOJ 1207 汉诺塔II
    [转]写代码的小女孩
    POJ Subway tree systems
    HDOJ 3555 Bomb (数位DP)
    POJ 1636 Prison rearrangement (DP)
    POJ 1015 Jury Compromise (DP)
    UVA 10003
    UVA 103 Stacking Boxes
    HDOJ 3530 Subsequence
    第三百六十二、三天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/ccjt/p/4357827.html
Copyright © 2011-2022 走看看