OpenEdv-开源电子网

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

OV7670 二值化显示分屏

[复制链接]

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
发表于 2017-8-2 19:53:57 | 显示全部楼层 |阅读模式
1金钱
OV7670彩色显示时,一切正常,但是灰度化再二值化之后就发生了分屏现象,怎么破?

1.jpg
2.jpg

最佳答案

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

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2017-7-24
在线时间
22 小时
发表于 2017-8-3 20:17:42 | 显示全部楼层
兄弟,在原代码里加上两句不就行了?

代码

代码
IMG_20170803_201459.jpg IMG_20170803_201506.jpg
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-4 21:09:28 | 显示全部楼层
这是我试过了的好用的代码,在原子的基础上简化了一下,真的很感谢大家,同时也希望能帮到没有成功的人。

OV7670 YUV422.zip

302.93 KB, 下载次数: 1177

回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-2 19:53:58 | 显示全部楼层
用心去感受
TIM图片20170803193832.jpg
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-2 19:55:28 | 显示全部楼层
屏幕左侧显示异常,屏幕右侧发生了分屏@正点原子
回复

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2017-8-2
在线时间
9 小时
发表于 2017-8-2 20:05:31 | 显示全部楼层
源码能提供一下么?
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-2 20:06:45 | 显示全部楼层
void YUYV_Refresh(void)
{
        u32 j;
        u16 color;
        if(ov_sta==2)
        {
                LCD_Scan_Dir(U2D_L2R);                        //从上到下,从左到右
                LCD_SetCursor(0x00,0x0000);        //设置光标位置
                LCD_WriteRAM_Prepare();     //开始写入GRAM       
                OV7670_CS=0;
                OV7670_RRST=0;                                                        //开始复位读指针
                OV7670_RCK=0;
                OV7670_RCK=1;
                OV7670_RCK=0;
                OV7670_RRST=1;                                                        //复位读指针结束
                OV7670_RCK=1;  

                for(j=0;j<76800;j++)
                {
                        GPIOB->CRL=0X88888888;                  
                        OV7670_RCK=0;
                        OV7670_RCK=1;                
                        color=OV7670_DATA;                                //读数据                  

                        OV7670_RCK=0;
                        OV7670_RCK=1;
                        OV7670_DATA;                                                        //读数据                  
                        GPIOB->CRL=0X33333333;
                        color>>=5;
                        if(color>0x03)
                                color=0xffff;//白色            
                        else
                                color=0x0000;//黑色
                        LCD_WR_DATA(color);
                }
                OV7670_CS=1;
                OV7670_RCK=0;
                OV7670_RCK=1;
                EXTI->PR=1<<15;                                     //清除LINE8上的中断标志位
                ov_sta=0;                                                                                //开始下一次采集
                ov_frame++;
                LCD_Scan_Dir(DFT_SCAN_DIR);        //恢复默认扫描方向                                                     
        }          
}
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-2 20:23:44 | 显示全部楼层
YUV输出模式应该是8位的,理论上我读一次之后再判断阀值二值化就行了,之前我有试过只读一次,效果不好,但是刚才又试了一下,突然又好使了,但是仍然有分屏现象。要怎么解决呢?

回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-2 20:25:42 | 显示全部楼层
修改之后的代码
[mw_shl_code=c,true]void YUYV_Refresh(void)
{
        u32 j;
        u16 color;
        if(ov_sta==2)
        {
                LCD_Scan_Dir(U2D_L2R);                        //从上到下,从左到右
                LCD_SetCursor(0x00,0x0000);        //设置光标位置
                LCD_WriteRAM_Prepare();     //开始写入GRAM       
                OV7670_CS=0;
                OV7670_RRST=0;                                                        //开始复位读指针
                OV7670_RCK=0;
                OV7670_RCK=1;
                OV7670_RCK=0;
                OV7670_RRST=1;                                                        //复位读指针结束
                OV7670_RCK=1;  

                for(j=0;j<76800;j++)
                {
                        GPIOB->CRL=0X88888888;                  
                        OV7670_RCK=0;
                        OV7670_RCK=1;                
                        color=OV7670_DATA;                                //读数据                  

//                        OV7670_RCK=0;
//                        OV7670_RCK=1;
//                        OV7670_DATA;                                                        //读数据                  
                        GPIOB->CRL=0X33333333;
                        color>>=5;
                        if(color>0x03)
                                color=0xffff;//白色            
                        else
                                color=0x0000;//黑色
                        LCD_WR_DATA(color);
                }
                OV7670_CS=1;
                OV7670_RCK=0;
                OV7670_RCK=1;
                EXTI->PR=1<<15;                                     //清除LINE8上的中断标志位
                ov_sta=0;                                                                                //开始下一次采集
                ov_frame++;
                LCD_Scan_Dir(DFT_SCAN_DIR);        //恢复默认扫描方向                                                     
        }          
}
[/mw_shl_code]
回复

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2017-8-2
在线时间
9 小时
发表于 2017-8-2 20:29:05 | 显示全部楼层
我正好也在做7670,例程把刷新函数换成你的函数,没有分屏现象发生。我是mini板,摄像头是正点的7670.
回复

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2017-8-2
在线时间
9 小时
发表于 2017-8-2 20:31:53 | 显示全部楼层
您好,打扰了我这里有个问题需要请教你的。

你的那个帧数能跟上么?我这里变化的太慢了。
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-2 20:36:41 | 显示全部楼层
本帖最后由 Zerxoi 于 2017-8-2 20:38 编辑
简单,是种爱 发表于 2017-8-2 20:29
我正好也在做7670,例程把刷新函数换成你的函数,没有分屏现象发生。我是mini板,摄像头是正点的7670.
我也是mini板,也是正点原子的ov7670,你的好用么?
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-2 20:37:29 | 显示全部楼层
简单,是种爱 发表于 2017-8-2 20:31
您好,打扰了我这里有个问题需要请教你的。

你的那个帧数能跟上么?我这里变化的太慢了。

帧数有点低,但是基本的显示还是可以的。
回复

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-10-13
在线时间
21 小时
发表于 2017-8-2 21:45:42 | 显示全部楼层
我的显示全是灰的
回复

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-10-13
在线时间
21 小时
发表于 2017-8-2 21:53:04 | 显示全部楼层
感觉特别黑是怎么回事
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2017-8-1
在线时间
7 小时
发表于 2017-8-2 22:31:40 | 显示全部楼层
加油 最近大家都在弄这个  。。。虽然我还没弄明白
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-3 07:59:03 | 显示全部楼层
王志鹏 发表于 2017-8-2 21:53
感觉特别黑是怎么回事

ov7670输出模式是yuv么?
回复

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-10-13
在线时间
21 小时
发表于 2017-8-3 10:33:01 | 显示全部楼层
Zerxoi 发表于 2017-8-3 07:59
ov7670输出模式是yuv么?

设置的不对  能加你QQ或者微信吗
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-3 10:49:43 | 显示全部楼层
我怀疑是OV7670的YUV输出读取时和写到LCD上不匹配的问题,ILI9341只能写入RGB565。
反正我的想法是YUV422格式把Y提取出来,用Y判断亮度,二值化换成RGB565,写到LCD上。
怎么破怎么破?@正点原子
回复

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-10-13
在线时间
21 小时
发表于 2017-8-3 10:51:35 | 显示全部楼层
Zerxoi 发表于 2017-8-3 07:59
ov7670输出模式是yuv么?

     /*以下为OV7670 QVGA RGB565参数  */
  {0x3a, 0x04},//
        {0x40, 0x10},
        {0x12, 0x10},//QVGA,RGB输出
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2017-8-3
在线时间
0 小时
发表于 2017-8-3 11:03:55 | 显示全部楼层
能把你的程序发给我么 我最近也在研究这个 网上资料真的少
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-3 12:13:41 | 显示全部楼层
源码,希望各位能帮我想想办法。Please!!

OV7670 YUV422.zip

4.17 MB, 下载次数: 2611

回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-3 13:28:05 | 显示全部楼层
王志鹏 发表于 2017-8-3 10:33
设置的不对  能加你QQ或者微信吗

我发了源码,你看看源码里的配置,我也说不上来为什么我的配置好用。
回复

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-10-13
在线时间
21 小时
发表于 2017-8-3 14:39:35 | 显示全部楼层
Zerxoi 发表于 2017-8-3 13:28
我发了源码,你看看源码里的配置,我也说不上来为什么我的配置好用。

现在还是分屏啊
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2016-3-31
在线时间
26 小时
发表于 2017-8-3 15:16:15 | 显示全部楼层
LCD怎么显示灰度图
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2017-8-3
在线时间
0 小时
发表于 2017-8-3 15:42:45 | 显示全部楼层
先说我是小白,我感觉彩色的时候lcd的像素和摄像头的像素一致,二值化后数据可能会减少为以前的一半,我记得有人写过强制将图像设置为多少像素的程序,我也是刚学习,说的不对,楼主别骂。
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-3 16:41:46 | 显示全部楼层
也是小白,我也是前几天刚开始搞的,也不是很懂,之前看网上说YUV输出是每隔2个像素取UV,而Y是每个像素都取,不知道理解的对不对。
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-3 16:43:17 | 显示全部楼层
竺元枫 发表于 2017-8-3 15:16
LCD怎么显示灰度图

配置OV7670输出为YUV,然后将YUV输出转成RGB565给LCD显示,出来的就是灰度图。
回复

使用道具 举报

1

主题

23

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2017-7-30
在线时间
8 小时
发表于 2017-8-4 01:56:29 来自手机 | 显示全部楼层
做板球系统需要帧频率为多少?
回复

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2017-8-2
在线时间
9 小时
发表于 2017-8-4 08:46:28 | 显示全部楼层
我认为要想能稳定,不低于50帧。
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-28
在线时间
8 小时
 楼主| 发表于 2017-8-4 09:56:54 | 显示全部楼层
zcxlyf 发表于 2017-8-3 20:17
兄弟,在原代码里加上两句不就行了?

可以啊,效果很好啊。
回复

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-10-13
在线时间
21 小时
发表于 2017-8-4 11:18:15 | 显示全部楼层
Zerxoi 发表于 2017-8-4 09:56
可以啊,效果很好啊。

弄出来了么  发个例程看看
回复

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-10-13
在线时间
21 小时
发表于 2017-8-4 11:24:28 | 显示全部楼层
zcxlyf 发表于 2017-8-3 20:17
兄弟,在原代码里加上两句不就行了?

加上不管用啊 哥们
回复

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2017-7-24
在线时间
22 小时
发表于 2017-8-4 21:24:23 | 显示全部楼层
王志鹏 发表于 2017-8-4 11:24
加上不管用啊 哥们

哥们,我的板子战舰,例程寄存器版本,temp先定义临时变量,后面后面再加上这几句代码没问题啊?
回复

使用道具 举报

0

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2016-10-25
在线时间
19 小时
发表于 2017-8-4 21:58:59 | 显示全部楼层
zcxlyf 发表于 2017-8-4 21:24
哥们,我的板子战舰,例程寄存器版本,temp先定义临时变量,后面后面再加上这几句代码没问题啊?

你好,二值化以后 ,如何确定图像的 中心坐标! 今天试了一天,单输出的坐标不对 !
求解!
回复

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2017-7-24
在线时间
22 小时
发表于 2017-8-5 08:09:57 | 显示全部楼层
robot007 发表于 2017-8-4 21:58
你好,二值化以后 ,如何确定图像的 中心坐标! 今天试了一天,单输出的坐标不对 !
求解!

图像中心坐标跟你的屏幕有关,好好看看原子哥的显示屏例程以及camerfresh();
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
发表于 2017-8-5 09:51:26 | 显示全部楼层
都是电赛的小伙伴啊
回复

使用道具 举报

0

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2017-2-2
在线时间
24 小时
发表于 2017-8-5 10:02:45 | 显示全部楼层
改用山外鹰眼吧,硬件二值化,自带上位机,省时又省力。
回复

使用道具 举报

0

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2016-10-25
在线时间
19 小时
发表于 2017-8-5 10:03:43 | 显示全部楼层
zcxlyf 发表于 2017-8-5 08:09
图像中心坐标跟你的屏幕有关,好好看看原子哥的显示屏例程以及camerfresh();

OK
回复

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
33 小时
发表于 2017-8-5 10:15:27 | 显示全部楼层
诸葛景云 发表于 2017-8-5 10:02
改用山外鹰眼吧,硬件二值化,自带上位机,省时又省力。

k60的   
回复

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-10-13
在线时间
21 小时
发表于 2017-8-5 10:25:53 | 显示全部楼层
诸葛景云 发表于 2017-8-5 10:02
改用山外鹰眼吧,硬件二值化,自带上位机,省时又省力。

多少帧  
回复

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-10-13
在线时间
21 小时
发表于 2017-8-5 10:28:04 | 显示全部楼层
robot007 发表于 2017-8-4 21:58
你好,二值化以后 ,如何确定图像的 中心坐标! 今天试了一天,单输出的坐标不对 !
求解!

加个好友 讨论一下吧  我也在做
回复

使用道具 举报

0

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2017-2-2
在线时间
24 小时
发表于 2017-8-5 11:36:25 | 显示全部楼层

60多好像是,不过有点贵,最近炒的厉害
回复

使用道具 举报

4

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2017-4-5
在线时间
24 小时
发表于 2017-8-5 13:49:06 | 显示全部楼层
挺厉害啊
回复

使用道具 举报

4

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2017-4-5
在线时间
24 小时
发表于 2017-8-5 13:49:25 | 显示全部楼层
看样都是大神啊
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-7-30
在线时间
8 小时
发表于 2017-8-5 14:28:41 | 显示全部楼层
Zerxoi 发表于 2017-8-4 21:09
这是我试过了的好用的代码,在原子的基础上简化了一下,真的很感谢大家,同时也希望能帮到没有成功的人。

兄弟   二值化后你的显示能达到多少帧?
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-7-30
在线时间
8 小时
发表于 2017-8-5 14:30:21 | 显示全部楼层
诸葛景云 发表于 2017-8-5 10:02
改用山外鹰眼吧,硬件二值化,自带上位机,省时又省力。

你有用上外鹰眼加到stm32上吗?
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-7-30
在线时间
8 小时
发表于 2017-8-5 14:32:02 | 显示全部楼层
zcxlyf 发表于 2017-8-3 20:17
兄弟,在原代码里加上两句不就行了?

兄弟,你现在哢的这个能达到多少帧?
回复

使用道具 举报

11

主题

104

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2017-7-14
在线时间
25 小时
发表于 2017-8-5 14:56:23 | 显示全部楼层
请问0V7670YUV的输出格式是什么?
回复

使用道具 举报

11

主题

104

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2017-7-14
在线时间
25 小时
发表于 2017-8-5 14:57:49 | 显示全部楼层
Zerxoi 发表于 2017-8-3 16:43
配置OV7670输出为YUV,然后将YUV输出转成RGB565给LCD显示,出来的就是灰度图。

你好能分享一下YUV转565的程序吗?不清楚YUV422的输出格式。。。不知道怎么转
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-20 11:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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