OpenEdv-开源电子网

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

OV7670程序中写入LCD_GRAM中的color值,想对其进行拆分,拆分为RGB三色值,然后转换为灰度,为什么做出来这几个值波动特别大

[复制链接]

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-1-26
在线时间
6 小时
发表于 2016-6-22 19:19:27 | 显示全部楼层 |阅读模式
2金钱
OV7670程序中写入LCD_GRAM中的color值,想对其进行拆分,拆分为RGB三色值,然后转换为灰度,为什么做出来这几个值波动特别大,特别不稳定?求助,下面是我拆分的代码:
void camera_refresh(void)
{
        u32 j;
        u16 color,red,green,blue,grey;         
        if(ov_sta)//óDÖ¡ÖD¶Ï¸üD£¿
        {
                LCD_Scan_Dir(U2D_L2R);                //′óéÏμ½ÏÂ,′ó×óμ½óò  
                if(lcddev.id==0X1963)LCD_Set_Window((lcddev.width-240)/2,(lcddev.height-320)/2,240,320);//½«ÏÔê¾ÇøóòéèÖÃμ½ÆáÄ»ÖDÑë
                else if(lcddev.id==0X5510||lcddev.id==0X5310)LCD_Set_Window((lcddev.width-320)/2,(lcddev.height-240)/2,320,240);//½«ÏÔê¾ÇøóòéèÖÃμ½ÆáÄ»ÖDÑë
                LCD_WriteRAM_Prepare();     //¿aê¼D′èëGRAM       
                OV7670_RRST=0;                                //¿a꼸′λ¶áÖ¸Õë
                OV7670_RCK_L;
                OV7670_RCK_H;
                OV7670_RCK_L;
                OV7670_RRST=1;                                //¸′λ¶áÖ¸Õë½áêø
                OV7670_RCK_H;
                for(j=0;j<76800;j++)
                {
                        OV7670_RCK_L;
                        color=GPIOC->IDR&0XFF;        //&#182;áêy&#190;Y
                        OV7670_RCK_H;
                        color<<=8;  
                        OV7670_RCK_L;
                        color|=GPIOC->IDR&0XFF;        //&#182;áêy&#190;Y
                        OV7670_RCK_H;
                        LCD->LCD_RAM=color;   
                        red=color&0xF800;
                        red=red>>8;
                        green=color&0x07E0;
                        green=green>>3;
                        blue=color&0x001F;
                        blue=blue<<3;
                        grey=(red*38+green*75+blue*15)>>7;
                }  

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-6-22 20:42:31 | 显示全部楼层
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-1-26
在线时间
6 小时
 楼主| 发表于 2016-6-23 08:09:41 | 显示全部楼层

red,green,blue,grey这几个波动都很大,测量同一个颜色的时候,每次他们都不一样,很难会有测量同一种颜色他们相等的时候,还有,原子哥,我这么拆分对么,处理一帧图像,是把color值拆分,然后用那个心理学公式算出灰度,即阈值,然后进行二值化,对吧?
回复

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2016-7-4
在线时间
16 小时
发表于 2016-7-10 18:47:28 | 显示全部楼层
449117724 发表于 2016-6-23 08:09
red,green,blue,grey这几个波动都很大,测量同一个颜色的时候,每次他们都不一样,很难会有测量同一种颜 ...

我也这么弄得   基本 不变  偶尔 感觉是对的 这要看摄像头心情   同求 稳定
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-12-28
在线时间
17 小时
发表于 2016-7-25 18:51:53 | 显示全部楼层
red=color&0xF800;
red=red>>8;
输出是RGB565,把R的值提出来的话应该是左移11位,为什么是8位?
新手不懂,请教一下。

     
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 04:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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