智能汽车竞赛摄像头处理(6)——在屏幕中画出找赛道边线和赛道中线

本文介绍了如何通过代码在显示屏上绘制赛道边线和中线,采用九宫格画线法增强线条可见度。详细展示了伪代码,并在cpu1.c文件中集成相关功能。同时提供了调试方法,包括观察运行效果和实际操作测试以确保准确性。
摘要由CSDN通过智能技术生成

目录

前言

思路

代码

使用

调试方法


前言

前一篇文章我们通过代码找到了赛道边线和中线,为了直观地体现我们通过算法找的边线和中线是否合适,我们最好是将找到的赛道边线和中线画在屏幕上,这样我们就可以看到找线的效果如何,为了不影响比赛时图像处理时间过长影响小车运行,后面小车要正式跑之前将显示关闭即可。

思路

首先我们要知道在显示屏上只画一个点的显示效果肯定是不明显的,如果我们只把边线和中线上的点画出来,效果可能不明显。

所以我们除了要把边线和中线上的点画出来以外还要将边线和中线上的点的周围的几个点也画出来,来把线画粗一点,为此我们可以采用九宫格画线法,避免 少画点 和 画到重复的点。

代码

九宫格画线的伪代码如下,大家可以借鉴思路后根据实际情况改动。

//绘制边线函数(画线即画很多个点)
void Find_Mid_Line_Draw_Line(void)
{
    for(uint8 i = MT9V03X_H - 1; i > 0;i--)
    {
        //全画
        draw_points(left_line_list[i],i,BLUE);
        draw_points(right_line_list[i],i,BLUE);
        draw_points(mid_line_list[i],i,RED);
    }
}

//九宫格画点函数
//在九宫格画线的同时要注意数组不能越界,即判断是否为边界点,若有些点是边界点就不能画点
void draw_points(uint8 x,uint8 y,uint16 color)
{
    if(x != MT9V03X_W - 1)
    {
        tft180_draw_point(x+1,y,color);
        if(y != MT9V03X_H - 1)
        {
            tft180_draw_point(x,y+1,color);
            tft180_draw_point(x+1,y+1,color);
        }
        if(y != 0)
        {
            tft180_draw_point(x,y-1,color);
            tft180_draw_point(x+1,y-1,color);
        }
    }
    if(x != 0)
    {
        tft180_draw_point(x-1,y,color);
        if(y != MT9V03X_H - 1)
        {
            tft180_draw_point(x,y+1,color);
            tft180_draw_point(x-1,y+1,color);
        }
        if(y != 0)
        {
            tft180_draw_point(x,y-1,color);
            tft180_draw_point(x-1,y-1,color);
        }
    }
    tft180_draw_point(x,y,color);
}

使用

在cpu1.c中添加以下代码:

    while (TRUE)
    {
        // 此处编写需要循环执行的代码

        if(mt9v03x_finish_flag)     //一幅图像完全采集完毕后,再进行图像的显示判断和显示
        {
            //Set_image_towvalues(150); //固定阈值二值化
            BandW_threshold = otsuThreshold_fast(mt9v03x_image[0]);//大津法得到动态阈值
            Set_image_towvalues(BandW_threshold); //动态阈值二值化,得到二值化后的二维数组mt9v03x_image_BandW
            
            Find_Mid_Line(mt9v03x_image_BandW[MT9V03X_H][MT9V03X_W]);//找边线
            
            tft180_displayimage03x(mt9v03x_image_BandW[0],MT9V03X_W,MT9V03X_H);//显示二值化后的图像
            Find_Mid_Line_Draw_Line();//画线
            
            mt9v03x_finish_flag = 0;//图像显示完成后才对标志位清零
        }

        // 此处编写需要循环执行的代码
    }

调试方法

烧录代码后,调试代码的方法:

(1)观察代码运行效果:找线找的对不对,准不准。

(2)可以用手去推车,观察屏幕显示的图像,观察在此找线逻辑中会不会出现赛道偏差的情况,为避免这些情况出现,要增加或修改代码把bug解决。

  • 18
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
智能车摄像头赛道是指一种应用于智能车辆中的摄像头系统,在赛道上通过图像识别和处理技术来实现自主驾驶或辅助驾驶的功能。赛道通常是设计好的道路模型,有各种道路标志、交通信号灯和障碍物等用于模拟真实交通环境。 在智能车摄像头赛道中,摄像头扮演着关键角色。它需要准确捕捉到赛道上的图像,并基于这些图像来做实时的决策。摄像头需要具备高分辨率、高动态范围和低延迟的特点,以便快速且准确地捕捉到道路上的细微变化。 赛道上会设置各种交通标志和信号灯,智能车摄像头需要通过图像识别技术来识别这些标志和信号灯,并据此做相应的行驶决策。例如,通过识别红绿灯的颜色,摄像头可以判断何时停车或起步;通过识别道路标志,摄像头可以判断当前道路的限速或转弯方向。 此外,赛道上还可能存在各种障碍物,如其他车辆、行人或动物等。摄像头需要及时发现这些障碍物,并做相应的躲避或避让动作,以确保行驶的安全性。 为了更好地应对复杂的赛道情况,智能车摄像头通常会结合其他传感器,如雷达、激光雷达和超声波传感器等,进行多模态数据融合,以提高感知的准确性和鲁棒性。 总之,智能车摄像头赛道是一个重要的研究领域,其主要目标是利用摄像头和图像处理技术,实现智能车辆在道路上自主驾驶或辅助驾驶的功能,为实现更安全、高效、智能的交通运输做贡献。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦克斯同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值