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

    }

  • 相关阅读:
    mysql 数据库备份
    半同步复制
    mysql在线热备
    mysqlxtrabackup备份
    MySQL备份与恢复
    Mysql语句类型
    MySQL的体系结构
    MySQL介绍及安装
    Shell-02-if
    Shell 脚本进阶,经典用法及其案例
  • 原文地址:https://www.cnblogs.com/ccjt/p/4357827.html
Copyright © 2011-2022 走看看