系列文章
智能车复工日记【2】——普通PID、变结构PID、微分先行PID、模糊PID、专家PID
智能车复工日记【3】:图像处理——基本扫线和基本特征提取和十字补线
智能车复工日记【N】:图像处理——环岛debug记录(持续更新)
CROSSROAD:十字拐点
ROUNDISLAND:环岛拐点
rightfindflag[i]:表示第i行的右线是否被找到,1为找到,0为没有找到
flag_find_huan_rightdown_point :找到环岛右下拐点标志
flag_find_huan_rightmiddle_point:找到环岛右中拐点标志
找拐点的思路:观察一段数据中数据点的走向趋势,并且保证这段数据是准确的。在摄像头畸变比较严重的情况下这种方法不再适用
关于函数的调用请见:https://blog.csdn.net/qq_42604176/article/details/105336462
【1】找右下拐点函数
//【Function5】找右下拐点函数
//输入: start点 end点 所要判断的下拐点的类型(环岛还是十字?)
void find_rightdown_point(byte start_point, byte end_point, byte RoadName)
{
byte j;
if (RoadName == CROSSROAD)
{
for (j = start_point; j <= end_point; j++)
{
//找右边突变(下拐点)
if (My_Abs(rightline[j - 1] - rightline[j - 2]) <= 3 && My_Abs(rightline[j] - rightline[j - 1]) <= 3 && (rightline[j + 1] - rightline[j] <= -2)
&& rightfindflag[j - 2] == 1 && rightfindflag[j - 1] == 1 && rightfindflag[j] == 1)
{
right_turn_down[0] = j + 1;//数组里面没有第0行
right_turn_down[1] = rightline[j];
break;
}
}
}
else if (RoadName == ROUNDISLAND)
{
for (j = start_point; j <= end_point; j++)
{
//找右边突变(下拐点)
if (r_start <= 34 && My_Abs(rightline[j - 1] - rightline[j - 2]) <= 3 && My_Abs(rightline[j] - rightline[j - 1]) <= 3 && (rightline[j + 1] - rightline[j] <= -2)
&& rightfindflag[j - 2] == 1 && rightfindflag[j - 1] == 1 && rightfindflag[j] == 1)
{
right_turn_down[0] = j + 1;//数组里面没有第0行
right_turn_down[1] = rightline[j];
flag_find_huan_rightdown_point = 1;
break;
}
}
//如果右下拐点坐标不为空 且 环岛状态不是4 就认定找到环岛的右下拐点
if (right_turn_down[0] != 0 && huandao_memory != 4) flag_find_huan_rightdown_point = 1;
}
else
{
}
}
【2】找左下拐点函数
//【Function6】找左下拐点函数
//输入: start点 end点 所要判断的下拐点的类型(环岛还是十字?)
void find_leftdown_point(byte start_point, byte end_point, byte RoadName)
{
byte j;
if (RoadName == CROSSROAD)
{
for (j = start_point; j <= end_point; j++)
{
//找左边突变(下拐点);连续且是存在的点()
if (My_Abs(lefetline[j - 1] - lefetline[j - 2]) <= 3 && My_Abs(lefetline[j] - lefetline[j - 1]) <= 3 && (lefetline[j + 1] - lefetline[j] >= 3)
&& leftfindflag[j - 2] == 1 && leftfindflag[j - 1] == 1 && leftfindflag[j] == 1)
{
left_turn_down[0] = j + 1;//数组里面没有第0行
left_turn_down[1] = lefetline[j];
break;
}
}
}
else if (RoadName == ROUNDISLAND)
{
//setText用户自定义("l_start"+ l_start);
for (j = start_point; j <= end_point; j++)
{
//找左边突变(下拐点);连续且是存在的点()
if (l_start <= 34 && My_Abs(lefetline[j - 1] - lefetline[j - 2]) <= 3 && My_Abs(lefetline[j] - lefetline[j - 1]) <= 3 && (lefetline[j + 1] - lefetline[j] >= 3)
&& leftfindflag[j - 2] == 1 && leftfindflag[j - 1] == 1 && leftfindflag[j] == 1)
{
left_turn_down[0] = j + 1;//数组里面没有第0行
left_turn_down[1] = lefetline[j];
flag_find_huan_leftdown_point = 1;
break;
}
}
if (left_turn_down[0] != 0 && huandao_memory != 4) flag_find_huan_leftdown_point = 1;
}
else
{
}
}
获取详情请订阅:https://blog.csdn.net/qq_42604176/category_9858434.html?spm=1001.2014.3001.5482
评论(0)
您还未登录,请登录后发表或查看评论