智能车制作

标题: 黑线提取 [打印本页]

作者: 蓝光1775    时间: 2014-8-8 21:42
标题: 黑线提取
void GetBlack(void)
{

    byte i;                               //循环变量
    byte flag1,flag2;                  //左右黑线寻找标志数
    byte *line ;
    line = plat0 ;

    flag1=0;
    flag2=0;

//取得上一次数据   
    Q_lx = Lx;(Lx和Rx是表示什么意思?)
    Q_rx = Rx;

//===============1.得到黑线(隔3作差)=================//
    for(i=left_begin;i>3;i--)    //left_begin-->3
    {
        if((*(line+i)-*(line+ i-4))>=FA)        
        {
            flag1++;
            if(flag1>=3)               
            {
                Lx = i;
                break;
            }
       }
       else
       flag1 = 0;
    }

    if(flag1<3)
    {
         Lx=0;      //在左边没有黑线则用0代
    }

    for(i=right_begin;i<124;i++)  //right_begin++<124
    {
        if((*(line+i)-*(line + i+4))>=FA)
        {
            flag2++;
            if(flag2>=3)
            {
                Rx=i;
                break;
            }
        }
        else
        flag2=0;
    }   
    if(flag2<3)
    {
        Rx=128;                          //在右边没有找到黑线则用128代(这里为什么用128代替啊?)

    }
    //==============3.确定下一行扫描的起始位置===============
    left_begin  = (byte)(Lx+Rx)/2;
    right_begin = (byte)(Lx+Rx)/2;
}
问题已经在代码中明确了,哪位大神帮助一下看看呗?最好详细一点,我是新手



作者: 1072964526    时间: 2014-8-8 22:05
lx,rx是串口,,, 线性CCD一行采集的是128个点,左边找不到取0,右边找不到取128,左右平均就是64表示是在中间位置。
作者: 蓝光1775    时间: 2014-8-8 22:50
1072964526 发表于 2014-8-8 22:05
lx,rx是串口,,, 线性CCD一行采集的是128个点,左边找不到取0,右边找不到取128,左右平均就是64表示是在 ...

lx,rx是串口?它们有什么作用呐?

作者: 浅醉    时间: 2014-8-8 23:42
lx,rx是提取的左右线,不是串口
作者: 782257436    时间: 2014-8-9 00:11
好高端
作者: 蓝光1775    时间: 2014-8-9 08:04
浅醉 发表于 2014-8-8 23:42
lx,rx是提取的左右线,不是串口

谢谢啊,我现在明白了

作者: 黑色枫夜    时间: 2014-8-9 18:07
128是因为CCD128位。。。




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2