初级会员

- 积分
- 128
- 金钱
- 128
- 注册时间
- 2013-7-14
- 在线时间
- 3 小时
|
按照惯例,发帖前先废话一通,下面进入废话时间:本人开始接触摄像头的时候是菜鸟,现在依然是菜鸟,所以下面所说的可能会错漏百出或理解不透,大神就当笑话看吧,对于菜鸟呢,应该会有一点启发,毕竟事实摆在图片上。
很久前和同学把在LCD显示的图像弄成大小为160*120灰度图像,配置是按网上资料改的,详见附件程序中储存ov7670配置的.h文件的开头几行,顺便啰嗦一下YUV格式是8:4:4格式,不是说高8位是Y值(灰度值),低8位中4位是U,4位是V,而是第一帧高8位是Y,低8位是U,下一帧高8位是Y,低8位是V这样是轮流来。反正有用的Y值每一帧都有就是了,然后直接把Y值变16位输到LCD上?这就会出现一个现象:显示的图像轮廓是对的,但有颜色(蓝色)啊!而且不是实际物体上的颜色! 下面进入个人理解时间:白色对应的Y:0XFFFFFFFF,黑色:0X00000000,但实际中白色对应的Y只是趋于0xffffffff而不是于它对等,而你的LCD还是RGB565,,这就导致B【5:0】的值不是二进制:11111而出现的蓝色,同学就把已含高8位的color这个变量(例程)先右移3位,然后用变量color模仿RGB565的格式组成一个二进制16位数的值输出给LCD,出来的效果很好。(PS:程序是很久以前的,刚拿出来修改了一下多余的地方,没测试过,不过相关配置是正确的,可以参考。或许有人问为什么不拿现在的呢?因为现在用的板是同学画的,有一些端口改了,而TFT和OV7670改端口的话很费劲,改回去可能错误的地方更多,下面附上图片)
或许有人想改回全屏显示,对照例程把text.c这文件改回去,还有记得把时钟配置也要改回去,详见我上帖出现的问题和根据原子哥提示找到的解决办法。
接下来是我今天吐血看ov7670英文数据手册及调试的结果和出现的问题,望各路大神指点。
据我了解,Ov7670应该靠下图两个东东进行缩放分辨率,左边那个就是行场缩放规定的比例:1/2,1/4等等(主要配置寄存器0x3e/0x72/0x73)(PS:例程就是靠这个把原始数据640*480缩放成320*240并在LCD显示),右边那个是行场分别按自己设定的比例缩放(我是这么理解),搞了一天发现摄像头返回的像素还是320*240。最后在一个出现一条一条白色线的图像中发现焦距好像变了,然后把右边那个东东的英文名字百度一下,出现数码变焦关键字,**!这个东东是用来变焦的?英文数据手册怎么说是缩放比例?英文太渣理解错误?请各位大神告诉我这东东是不是用来变焦
的,如果是为什么会出现一条一条。如果不是那该怎么设置好?(附上得来不易的有间条的图片)
附件中含有中英文数据手册及在网上down下来的关于分辨率设置的资料,那几个寄存器像我这菜鸟一时半刻理解不了的话,关系也不大,因为例程已经把它编程函数,直接调用就可以了,要注意的是这个函数只适用于在二维数组中的配置设成QVGA格式才能用,因为VGA或其他格式和QVGA格式的时序图是不一样的(没测试过,好像是这样的。)
|
|