智能车制作
标题:
车子能跑双线,求助找单线?前两行提取代码贴出,问能不能兼容单双线?
[打印本页]
作者:
张云月
时间:
2015-4-13 18:40
标题:
车子能跑双线,求助找单线?前两行提取代码贴出,问能不能兼容单双线?
//计算前2行的左右边缘
for(i=DATALINE-1;i>DATALINE-3;i--)
{
// for(j=(DATACOUNT/2-40);j<(DATACOUNT-1);j++)//计算前2行右边界 起始点靠左一点 011(白黑黑)
for(j=(DATACOUNT/2-10);j<DATACOUNT-1;j++)
{
if(ImageBuf2[i][j-1]==0&&ImageBuf2[i][j]==1&&ImageBuf2[i][j+1]==1&&blackright[i]==DATACOUNT)//省掉break,
{
blackright[i]=j;
break; //这一行是4月1号晚添加
}
}
for(m=(DATACOUNT/2+10);m>0;m--) //计算前2行左边界 起始点靠右一点 110(黑黑白)
{
if(ImageBuf2[i][m-1]==1&&ImageBuf2[i][m]==1&&ImageBuf2[i][m+1]==0&&blackleft[i]==0)//省掉break,
{
blackleft[i]=m;
break; //这一行是4月1号晚添加
}
}
if((blackright[i]-blackleft[i])>(bxiankuan[i]*2-2)||(blackright[i]-blackleft[i])<(bxiankuan[i]*2-20))
{
for(i=DATALINE-1;i>DATALINE-3;i--)
{
for(j=0;j<DATACOUNT;j++)
{
if(ImageBuf2[i][j]==1)//如果是黑点
{
row_black=j;//记录该行第一个黑点的位置
for(j=j+1;j<DATACOUNT;j++)//继续对下一列进行判断
{
if(ImageBuf2[i][j]==0)//如果是白点
{
row_white=j;//记录该行连续黑点后的第一个白点的位置
len=row_white-row_black;//黑线宽度
blackdot=row_black+((len+1)>>1);//计算第i行的中心线位置
if(len>4 && len<11) //前两行黑线宽度为6到10
{
blackright[i]=row_white;
blackleft[i]=row_black;
// center[i]=blackdot;
}
if(len>30)
{
if(i>0)
// center[i]=center[i+1];
blackright[i]=blackright[i+1];
blackleft[i]=blackleft[i+1];
}
break;//跳出上一个for循环,对下一行进行黑线提取
}
}
}
}
}
}
这是提取前两行黑线的代码,请各位大神指教指教,这个能不能兼容单双线赛道?我的车子可以跑双线,但是有单线的时候会把中心引导线当成左边黑线,车子在右边赛道走,这个怎么解决?
作者:
xHERO
时间:
2015-5-3 19:11
我也遇到同样的问题
作者:
一心一境14
时间:
2015-5-3 20:22
同无思路
作者:
樊洪江
时间:
2015-5-6 18:46
双线和单线的区别应该就是跳变吧,左右两个的黑线同时有一个跳变
作者:
嘎嘎嘎嘎
时间:
2015-5-17 10:13
朋友,你解决了么?
作者:
1chuxian1
时间:
2015-5-17 13:26
同问
作者:
在寻找的暅
时间:
2015-5-20 19:58
同问
:)
作者:
sw5131899
时间:
2015-5-21 20:35
在寻找的暅 发表于 2015-5-20 19:58
同问
搜索车前5行,从左到右,从右到左同时搜索,寻找白到黑的跳变,然后用数组统计黑线边缘,求中时用两个数组相加除2,就可以获得中线,单双都好使
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2