今年第一次搞智能车,刚刚上大一,一切都是摸索着来,趁着放假了就把自己学会的东西梳理一下。第一次写的比较乱,欢迎各位一起学习(我亲爱的队友要加倍努力哈,这几天嗓子疼,不能腾讯会议给你讲了,专门给你写的)。

摄像头基础扫线方法:

(1)每次都从屏幕中线向两侧边缘进行扫线

(2)第一次从屏幕中线开始扫线接下来从上一次中线的位置开始向两侧进行扫线(种子生长)

摄像头扫描到的数据就是一个二维的数组,我用的是逐飞的总转风,库也是逐飞的,是以左上角为原点,向下Y轴递增,向右X轴递增。(如果摄像头安装正常的话),如果安反了,那么就变成以右下角为原点,向上Y轴递增,向左X轴递增的镜像了。后期的各种处理(比如二值化,元素识别等)本质上也都是对数组的处理(可以使一维数组也可以是二维数组,主要看你自己怎么弄了)

下面插入一个大佬的摄像头图像浅谈,里面介绍的就是摄像头的基本工作原理

(26条消息) 智能车浅谈——图像篇_小向是个Der的博客-CSDN博客_智能车图像识别

作为一个刚刚学过的小趴菜,我觉得新手最重要的就是先弄懂摄像头到底是一个什么样的运行原理,后期对元素的判断多种多样,但是根本原理都是相同的,打好基础总没错。

看完上边的链接,相信大家就能明白摄像头到底是一个什么样的工作原理了,接下来直接上我写的代码,直接实战。

    for (line = 100; line >= 20; line--) //纵向{/*0代表黑色,255代表白色,line代表Y轴上的纵坐标,list为X轴上的横坐标,两个简单的for循环,自己画个图就懂了,接下来的if是个边界的判断,在下一个if是对边界的限制。*/for (list = old; list < 188 - 2; list++) //向右横向
{if (mt9v03x_image1[line][list] == 255 &&mt9v03x_image1[line][list + 1] == 0 &&mt9v03x_image1[line][list + 2] == 0){rightline[line] = list;right_flag[line] =1;break;}}if (list == 188 - 2) {right_flag[line] =0;rightline[line] = 187;//右侧边缘位默认为187,即数组最大位}
/*与上边的同理*/for (list = old; list >= 2; list--) //向左横向
{if (mt9v03x_image1[line][list] == 255 &&mt9v03x_image1[line][list - 1] == 0 &&mt9v03x_image1[line][list - 2] == 0){leftline[line] = list;left_flag[line] = 1break;}}if (list == 1) {left_flag[line] = 0;leftline[line] = list;}road_width[line] = leftline[line] - rightline[line];计算赛道宽度,存放在一个一维数组中centerline[line] = (rightline[line] + leftline[line]) / 2;,计算中线的位置,存放在一维数组中,,centerline[line] :在第Y=line上中线的X坐标。old = centerline[line];将上一次的中线位置记入进变量old,下次以其为点进行寻找。

我是从下向上进行扫描,也就是原理原点的那端开始扫描,我的摄像头是120*188的,以20和100位扫线的Y轴界限是为了刨除前20行里可能出现的车头,和后20里可能出现的背景导致的扫线错误,这个值是可以随便改的,根据自己情况定。

我在每一次的向侧边扫线都用了两侧if判断:第一次是判断是否为边界,因为我用了二值化,mt9v03x_image1[][]这个二维数组就是我储存二值化后图像的二维数组。逐飞的库里有一个摄像头采集完成的标志位,采集完成后标志位会置1,采完在进行二值化,搞完你想搞的记得把标志位清零!!!

(26条消息) 【智能车】图像二值化算法--大津法OTSU_Ethan-Code的博客-CSDN博客_大津法二值化

二值化后除了赛道其他的图像都是黑色,只有赛道是白色。

举例:判断赛道左侧边缘

mt9v03x_image1[line][list] == 255   白
mt9v03x_image1[line][list + 1] == 0 黑(向左一位为黑)
mt9v03x_image1[line][list + 2] == 0 黑(向左两位也为黑)

那么我就判断mt9v03x_image1[line][list]这一点为赛道左侧边界

第二个if判断是如果扫不到线就用摄像头的边界值作为边缘线,毕竟不能空着嘛。

向右判断边界就一个意思了。最后我想说一句,大家刚刚开始不要慌,我刚开始一样啥也不会,跑起来不难,先跑起来再说喽。

我还会慢慢更的,前提是我学明白了。

智能车学习笔记(摄像头组)——基础扫线相关推荐

  1. 智能车大赛AI视觉组培训第一弹——基础篇

    智能车大赛AI视觉组培训第一弹: ▌基础篇 1.培训简介 ■时间安排: 2021年03月18日 14:00 ■内容简介: 由恩智浦赞助的AI视觉组,今年由于把人工智能应用在智能车竞赛中,使得难度提升了 ...

  2. 智能车学习日记【一】——让小车跑正方形赛道(摄像头图像处理赛道)

    智能车学习日记[一]--让小车跑正方形赛道 目录 开篇 舵机 赛道图像处理 图像处理 代码![在这里插入图片描述](https://img-blog.csdnimg.cn/9ec0eb76bd8941 ...

  3. vins中imu融合_小觅智能 | VINS 学习笔记(持续更新中)

    VINS 基本介绍 VINS-Mono 和 VINS-Mobile 是香港科技大学沈劭劼老师开源的单目视觉惯导 SLAM 方案.2017年发表于<IEEE Transactions on Rob ...

  4. 智能车大赛AI视觉组参考答案

      礼让动物采摘水果--最近, 智能车大赛AI视觉组 的题目已经发布,我们先为大家探探路.   前一期,逐飞科技给大家带来了一篇开幕大作: 智能车竞赛,AI视觉组赛题浅析 ,对该组别的核心赛题任务进行 ...

  5. 智能车学习日记【四】————环岛

    智能车学习日记[四]----环岛 文章目录 智能车学习日记[四]----环岛 前言 一.环岛分状态(以左环岛为例) 二.每个状态思路 状态1和状态2: 状态3: 状态4: 状态5: 状态6: 状态7: ...

  6. 智能车图像部分——摄像头寻迹

    智能车图像部分--摄像头寻迹(学习笔记) (1)摄像头基本原理 ·中断处理 pclk 每输出一个像素值产生一次 href 每输出完一行产生一次 vsync 每输出一场产生一次 ·DMA传输 摄像头初始 ...

  7. 小觅智能 | VINS 学习笔记

    摘自:https://zhuanlan.zhihu.com/p/48728586 小觅智能 | VINS 学习笔记(持续更新中) 小觅智能 专注立体视觉技术整体解决方案,网站 http://mynta ...

  8. 全国大学生智能车竞赛(创意组)陕西理工大学校级选拔赛顺利举行

      2021年11月14日,由陕西理工大学大学生科技领导小组主办,共青团陕西理工大学委员会.教务处.机械工程学院协办,全国大学生智能车竞赛(创意组)陕西理工大学校级选拔赛在机械学院307会议室举行. ...

  9. 物联网外设学习笔记-摄像头(一)

    物联网外设学习笔记-摄像头(一) Camera 简介 摄像头(CAMERA)又称为电脑相机.电脑眼等,它作为一种视频输入设备,在过去被广泛的运用于视频会议.远程医疗及实时监控等方面.近年以来,随着互联 ...

最新文章

  1. 将jar包部署在docker上,将jar包打成镜像,使用docker部署jar包
  2. 区块链将带来怎样的应用?
  3. TikTok跨境出海:Tiktok怎么月入几十W?
  4. 蓝桥杯-8-1因式分解(java)
  5. Boost enable_if库的测试程序
  6. P5200 [USACO19JAN]Sleepy Cow Sorting 牛客假日团队赛6 D 迷路的牛 (贪心)
  7. 怎么确保一个集合不能被修改
  8. php a链接怎么传id_PHP函数参数的传递
  9. 自动完成下拉框 Select2 关键字搜索的实例(本地数据与异步获取)
  10. Elasticsearch学习系列-搜索技术基本知识
  11. 磁盘IO性能监控(Linux 和 Windows)
  12. 组合数学—容斥原理与鸽巢原理
  13. 推荐3个好用的Excel项目管理甘特图模板
  14. 高等数学(第七版)同济大学 习题3-6 个人解答
  15. 如何做接口测试呢?接口测试有哪些工具【小白都会系列】
  16. java ftp 上传失败,java ftp上传时,代码不报错,也上传不过去文件
  17. 白帽专访丨大家好,我们是渊龙Sec安全团队
  18. 红米5plus 刷twrp
  19. gardner环 matlab,【matlab编程代做】位同步Gardner环的研究
  20. 将微信公众号中的图文制成PPT的方法

热门文章

  1. 【电脑常见问题解决方案集锦】
  2. 如何把第三方类库jar包编译为BlackBerry类库cod文件
  3. 图形 4.2 SSAO算法 屏幕空间环境光遮蔽
  4. 外汇天眼:美国房价7月出现两年来首次下跌 美国楼市或大幅减速
  5. 洛谷 P1063 [NOIP2006 提高组] 能量项链
  6. 干货|纳税人须知的纳税信用那些事儿
  7. vue中watch进行ajax,在vue中预加载watch用法
  8. TCP与UDP有哪些区别?
  9. [十三]深度学习Pytorch-卷积层(1D/2D/3D卷积、卷积nn.Conv2d、转置卷积nn.ConvTranspose)
  10. Torch 中添加自己的 nn Modules:以添加 Dropout、 Triplet Loss 为例