OpenEdv-开源电子网

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

求助原子哥,想用7670做色彩识别,结果出现了个很让人郁闷的问题,感觉很灵异

[复制链接]

28

主题

190

帖子

0

精华

高级会员

Rank: 4

积分
758
金钱
758
注册时间
2012-8-23
在线时间
71 小时
发表于 2013-6-2 00:00:51 | 显示全部楼层 |阅读模式
想做魔方色块颜色颜色识别来着,见下图

图中的十字架就是读取的像素点,从给定的一个点开始,向上下左右四个方向读取,直到出现黑色的凹槽,停止这个方向的读取,
但是现在出现个比较郁闷的问题,大家注意看图中红色十字架上方的那条红线,已经超过黑色的凹槽了(照片拍的不算好,大家见谅),
这是不应该出现的,应该到黑色的地方就终止了,四个方向的代码都是一样的,不知道为什么就是图中向上那个方向的红线会一直画,
而且后来试过不用摄像头,直接自己调用GUI函数在黑色背景色下画一个蓝色的正方形,然后也是读取这样一个红色十字架,也是图中这个方向的红线到了黑色不停止。

下面是主循环的代码:(我的板子是战舰,上面的图出问题的那条红线应该对应液晶屏的左侧)
//前面的初始化配置跟原子的初始化配置是一样的,就不贴出来了
//代码中红色的部分就是不正常的那段
while(1)
{
//=============图像读取扫屏=============== 
camera_refresh();//更新显示

O_RGB=LCD_ReadPoint(x_0,y_0);//读取中心点RGB色值
LCD_Fast_DrawPoint(x_0,y_0,RED);
//向右读取
while(O_RGB>20000)//未出现跳变则读取下一个点
{
camera_refresh();//更新显示
len[0]++;//点数自增
RGB_BF[len[0]]=O_RGB;
O_RGB=LCD_ReadPoint((x_0+len[0]),y_0);//读取新点
LCD_Fast_DrawPoint((x_0+len[0]),y_0,RED);
}
a[0]=len[0];
len[0]=0;

O_RGB=LCD_ReadPoint(x_0,y_0);//读取中心点RGB色值
LCD_Fast_DrawPoint(x_0,y_0,RED);
//向上读取
while(O_RGB>20000)//未出现跳变则读取下一个点
{
camera_refresh();//更新显示
len[1]++;//点数自增
RGB_BF[len[1]]=O_RGB;
O_RGB=LCD_ReadPoint(x_0,(y_0-len[1]));//读取新点
LCD_Fast_DrawPoint(x_0,(y_0-len[1]),RED);
}
a[1]=len[1];
len[1]=0;

O_RGB=LCD_ReadPoint(x_0,y_0);//读取中心点RGB色值
LCD_Fast_DrawPoint(x_0,y_0,RED);
//向下读取
while(O_RGB>20000)//未出现跳变则读取下一个点
{
camera_refresh();//更新显示
len[2]++;//点数自增
RGB_BF[len[2]]=O_RGB;
O_RGB=LCD_ReadPoint(x_0,(y_0+len[2]));//读取新点
LCD_Fast_DrawPoint(x_0,(y_0+len[2]),RED);
}
a[2]=len[2];
len[2]=0;

O_RGB=LCD_ReadPoint(x_0,y_0);//读取中心点RGB色值
LCD_Fast_DrawPoint(x_0,y_0,RED);
//向左读取
while(O_RGB>20000)//未出现跳变则读取下一个点
{
camera_refresh();//更新显示
len[3]++;//点数自增
RGB_BF[len[3]]=O_RGB;
O_RGB=LCD_ReadPoint((x_0-len[3]),y_0);//读取新点
LCD_Fast_DrawPoint((x_0-len[3]),y_0,RED);
}
LCD_ShowNum(94,250,O_RGB,5,16);
a[3]=len[3];
len[3]=0;

i++;
if(i==15)//DS0闪烁.
{
i=0;
LED0=!LED0;
  }
}

一介草民……
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-2 00:31:28 | 显示全部楼层
回复【楼主位】月光疾風:
---------------------------------
在可疑位置加入断点,然后直奔重点,直捣黄龙.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

28

主题

190

帖子

0

精华

高级会员

Rank: 4

积分
758
金钱
758
注册时间
2012-8-23
在线时间
71 小时
 楼主| 发表于 2013-6-2 01:19:04 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,现在找到一点儿眉目了
O_RGB=LCD_ReadPoint((x_0-len[3]),y_0);//读取新点 
LCD_Fast_DrawPoint((x_0-len[3]),y_0,RED);//似乎跟打红点这句话有关系
我把它去掉后,再读取任务完成后,显示len[3]内容到屏幕上,发现数值是对的,加上这句LCD_Fast_DrawPoint((x_0-len[3]),y_0,RED);就不对,而且只有这一个方向是这样的,难道不能一边向X轴负方向读取像素点,一边打点么?
一介草民……
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-2 01:32:30 | 显示全部楼层
回复【3楼】月光疾風:
---------------------------------
不支持负数...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

28

主题

190

帖子

0

精华

高级会员

Rank: 4

积分
758
金钱
758
注册时间
2012-8-23
在线时间
71 小时
 楼主| 发表于 2013-6-2 02:07:53 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
汗,那岂不是十字架左半边红线就没法画了
一介草民……
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-2 11:05:36 | 显示全部楼层
回复【5楼】月光疾風:
---------------------------------
不一定用这种方式啊,换个方式就好了....你只要坐标不出现负数就可以了啊.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

28

主题

190

帖子

0

精华

高级会员

Rank: 4

积分
758
金钱
758
注册时间
2012-8-23
在线时间
71 小时
 楼主| 发表于 2013-6-2 13:09:48 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
看来原子哥误解我的意思了,没有出现负数,是向屏幕的左侧读取像素点,是向X轴负轴的那个方向,读取的点还是在屏幕范围之内的,坐标都是正的
一介草民……
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-2 14:26:17 | 显示全部楼层
嗯,你可以打印一下读取出来的数值,看看是不是正常?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-6-2 15:09:27 | 显示全部楼层
数据类型出的问题么?
一直努力就很好。
回复 支持 反对

使用道具 举报

28

主题

190

帖子

0

精华

高级会员

Rank: 4

积分
758
金钱
758
注册时间
2012-8-23
在线时间
71 小时
 楼主| 发表于 2013-6-2 20:52:12 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
现在发现有问题的那个方向只要不打红点,读取像素点是正确的,但是一加上打点,读出来的值就不对
一介草民……
回复 支持 反对

使用道具 举报

28

主题

190

帖子

0

精华

高级会员

Rank: 4

积分
758
金钱
758
注册时间
2012-8-23
在线时间
71 小时
 楼主| 发表于 2013-6-2 20:52:52 | 显示全部楼层
回复【9楼】qq942266575:
---------------------------------
不晓得呢,感觉扫屏跟读点在向左读取的方向上有冲突
一介草民……
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2013-3-13
在线时间
0 小时
发表于 2013-8-7 12:06:12 | 显示全部楼层
遇见相同的问题!不知道楼主解决了没?指导一下小弟吧!!!!!!!!
逝者如斯夫不舍昼夜
回复 支持 反对

使用道具 举报

28

主题

190

帖子

0

精华

高级会员

Rank: 4

积分
758
金钱
758
注册时间
2012-8-23
在线时间
71 小时
 楼主| 发表于 2013-8-28 15:25:44 | 显示全部楼层
回复【12楼】624668529:
---------------------------------
没,我把3.5的屏换成2.8的就没这问题了,不知道是神马情况
一介草民……
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-14 05:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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