OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3518|回复: 10

OV7670拍摄图片重叠问题求教?

[复制链接]

34

主题

127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2012-1-7
在线时间
157 小时
发表于 2016-12-21 15:29:35 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 天涯水乡 于 2016-12-21 16:04 编辑

使用OV7670拍摄图片,240*320参照原子摄像实验。把每次拍到的数据保存进文件系统。代码如下:
2.jpg


由于没有液晶显示。想把数据做成bmp文件在PC机上打开。故把BMP的头文件在写入图像数据之前已经写入到文件。代码如下:

3.jpg
然后得到的图像不正常,感觉像图像发生了叠加。效果如下:
1.jpg



求教问题在哪里?
1.是不是BMP不能简单的把文件头和图像数据进行简单的组合?
2.是不是需要把保存在文件里的图像数据按照一定的顺序跟文件头进行组合?




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2012-1-7
在线时间
157 小时
 楼主| 发表于 2016-12-21 16:03:49 | 显示全部楼层
有哪位朋友指教下,谢谢大家!
回复

使用道具 举报

34

主题

127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2012-1-7
在线时间
157 小时
 楼主| 发表于 2016-12-21 16:37:19 | 显示全部楼层
求教原子哥@正点原子
回复

使用道具 举报

34

主题

127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2012-1-7
在线时间
157 小时
 楼主| 发表于 2016-12-22 17:12:35 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-12-25 23:09:12 | 显示全部楼层
参考我们照相机实验即可。
回复

使用道具 举报

34

主题

127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2012-1-7
在线时间
157 小时
 楼主| 发表于 2016-12-26 17:36:58 | 显示全部楼层
本帖最后由 天涯水乡 于 2016-12-26 17:53 编辑
正点原子 发表于 2016-12-25 23:09
参考我们照相机实验即可。

原子哥,这个就是参照照相机程序做的。只不过现在没有屏幕。直接在那个读76800的for循环里面写入到文件里面了。然后又把bmp的信息头66字节添加到文件开头了。然后把SD卡插电脑上读取图片,现在图像显示很不正常。
1.光盘里SD卡根目录文件网络模块那张图片是位深度24,我把组合好的bmp放在电脑显示位深度16,跟这个有没有关系?
2.在进行bmp信息头+图片数据的过程中,对于图片数据以什么顺序写入?我看照相机实验是从LCD的最后一行开始,也就是从下到上从左到右。而我的是读取的是从上到下从左到右,然后再拼接BMP头信息的时候直接把读出来的文件拷贝到了头文件66字节后面了,会不会是这个原因?


1.jpg           1.jpg
回复

使用道具 举报

2

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2016-11-1
在线时间
62 小时
发表于 2016-12-27 11:39:01 | 显示全部楼层
这个我研究过,直接用有个小问题,你ov7670驱动代码要改下,在发送的时候有新数据进入中断但是不能写fifo。
回复

使用道具 举报

34

主题

127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2012-1-7
在线时间
157 小时
 楼主| 发表于 2016-12-27 19:58:19 | 显示全部楼层
qq779089973 发表于 2016-12-27 11:39
这个我研究过,直接用有个小问题,你ov7670驱动代码要改下,在发送的时候有新数据进入中断但是不能写fifo。

就是我读完了76800个数据以后才能再次进入中断触发进行下一次读是吗?我试下,谢谢。
回复

使用道具 举报

2

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2016-11-1
在线时间
62 小时
发表于 2016-12-27 22:25:22 | 显示全部楼层
天涯水乡 发表于 2016-12-27 19:58
就是我读完了76800个数据以后才能再次进入中断触发进行下一次读是吗?我试下,谢谢。

忘记了还有一点,是fifo的写入过程是等待第二次触发中断才是完整的一帧的数据,用下面这个才能保证慢速读取时数据不会被刷新

void EXTI9_5_IRQHandler(void)
{                                
        if(EXTI_GetITStatus(EXTI_Line8)==SET)        //êÇ8ÏßμÄÖD¶Ï
        {  
                if(wr==0)
                {
                        if(step==0)
                        {
                                OV7670_WRST=0;        //¸′λD′Ö¸Õë                                   
                                OV7670_WRST=1;       
                                OV7670_WREN=1;        //ÔêDíD′èëFIFO          
                                //        ov_sta++;                //Ö¡ÖD¶Ï¼ó1
                                step=1;
                        }
                        else
                        {
                                OV7670_WREN=0;
                                step=0;
                                ov_sta++;       
                        }
                }
        }
        EXTI_ClearITPendingBit(EXTI_Line8);  //Çå3yEXTI8Ïß·1òÆeλ                                                  
}                                   
}
回复

使用道具 举报

34

主题

127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1067
金钱
1067
注册时间
2012-1-7
在线时间
157 小时
 楼主| 发表于 2016-12-28 08:59:45 | 显示全部楼层
qq779089973 发表于 2016-12-27 22:25
忘记了还有一点,是fifo的写入过程是等待第二次触发中断才是完整的一帧的数据,用下面这个才能保证慢速读 ...

那读取函数中, 判断这个ov_sta大于零以后,要把wr变量置一,然后读完了把它清零?
回复

使用道具 举报

2

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2016-11-1
在线时间
62 小时
发表于 2016-12-28 11:22:08 | 显示全部楼层
天涯水乡 发表于 2016-12-28 08:59
那读取函数中, 判断这个ov_sta大于零以后,要把wr变量置一,然后读完了把它清零?

是阿。。。。。。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-28 03:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表