新手上路
- 积分
- 21
- 金钱
- 21
- 注册时间
- 2016-3-13
- 在线时间
- 4 小时
|
下面是我写的代码,识别准确读不高,经常报错,希望大神这点一下 ,怎么改进方法。while(1)
{
camera_refresh(); //更新显示
if(i!=ov_frame) //DS0闪烁.
{
i=ov_frame;
LED0=!LED0;
}
color_temp=0; //滤波一下
for(i=0;i<9;i++)
{
color=LCD_ReadPoint(20,20);
color_temp += color;
}
dot1_color =color_temp/10;
color_temp=0;
for(i=0;i<9;i++)
{
color=LCD_ReadPoint(50,50); //读取像素点存入color_temp
color_temp += color;
}
dot2_color =color_temp/10;
color_temp=0;
for(i=0;i<9;i++)
{
color=LCD_ReadPoint(55,55); //读取像素点存入color_temp
color_temp += color;
}
dot3_color =color_temp/10;
color_temp=0;
for(i=0;i<9;i++)
{
color=LCD_ReadPoint(60,60); //读取像素点存入color_temp
color_temp += color;
}
dot4_color =color_temp/10;
color_temp=0;
for(i=0;i<9;i++)
{
color=LCD_ReadPoint(45,45); //读取像素点存入color_temp
color_temp += color;
}
dot5_color =color_temp/10;
printf("dot1_color:%x\r\n",dot1_color);
printf("dot2_color:%x\r\n",dot2_color);
printf("dot3_color:%x\r\n",dot3_color);
printf("dot4_color:%x\r\n",dot4_color);
printf("dot5_color:%x\r\n",dot5_color);
green_num = 0;
if(dot1_color>0x2a00&&dot1_color<0x3aff)green_num++;
if(dot2_color>0x2a00&&dot2_color<0x3aff)green_num++;
if(dot3_color>0x2a00&&dot3_color<0x3aff)green_num++;
if(dot4_color>0x2a00&&dot4_color<0x3aff)green_num++;
if(dot5_color>0x2a00&&dot5_color<0x3aff)green_num++;
red_num = 0;
if(dot1_color>0x9000&&dot1_color<0xaf00)red_num++;
if(dot2_color>0x9000&&dot2_color<0xaf00)red_num++;
if(dot3_color>0x9000&&dot3_color<0xaf00)red_num++;
if(dot4_color>0x9000&&dot4_color<0xaf00)red_num++;
if(dot5_color>0x9000&&dot5_color<0xaf00)red_num++;
/*************************下面是执行识别程序************************************/
if(green_num>=5) //检测到两次都在在绿色范围:0x5000-0x7000
{
green_first++;
if(green_first==2)
{
printf("Green is Open!"); //响一下
Buzzer(0);
delay_ms(500);
Buzzer(1);
delay_ms(500);
Buzzer(0);
green_first=0;
}
}
else if (red_num>=4) //检测到在红色范围:0xD000-0xF000
{
red_first++;
if(red_first==2)
{
Buzzer(1);
delay_ms(2000); //一直响
printf("Red is Open!");
red_first=0;
}
}
else //不在范围内
{
Buzzer(0);
}
}
|
|