树莓派循迹+图片识别(模板匹配)小车 C++

本文详细介绍了使用树莓派3B进行小车图像识别与控制的全过程,包括选择合适的编程语言、处理图像噪声、实现PID控制、模板匹配及图像识别等关键步骤。重点探讨了HSV颜色空间在图像识别中的应用,以及如何通过模板匹配和透视变换提高识别精度。

文末有有道翻译的版本,翻译的不准确的地方再来对照英文就清楚了
另外需要注意的是,在拟合到目标图像的四个角的位置后,对原图像进行投影变换再二值化进行模板匹配(而不是对二值化图像直接进行投影变换)效果要好不少
————

更新, 竟然有这么多人感兴趣,看来拿树莓派小车当课题的学校不少啊~
那我就在图片之间添加一些我认为比较重要的中文个人心得吧。
在这里插入图片描述
我用的是树莓派3b,两个串口里只有AMA0能用,另一个好像时钟源不太行,需要对系统进行更改,百度上一大把教程,我们学校提供的树莓派系统已经改好了,还带有opencv和codeblocks……

这里提到了python造成主板损坏,其实不是的(用脚指头想也不可能),问题是我们老师设计的H桥母版有问题,在和arduino进行通讯时产生了一些未知错误。总体来说,使用python对树莓派编程肯定是最方便简单的。
在这里插入图片描述
在刚开始我把图片转化成了灰度图,用灰度值来区分颜色,蠢到不行。除非你能保证整个地板的光是均匀反射的,否则灰度值完全不可靠。最可靠的还是HSV,我建议先写一个实时探测hsv的面板,用opencv自带的控件,来看地面上无论是黑线也好红线也好还是别的什么颜色的线,它们的hsv值到底是多少。磨刀不误砍柴工嘛。
在这里插入图片描述

在这里插入图片描述
网上大部分的循迹方法都是取一行像素来计算,可以是可以,但是小车速度比较快,路线比较曲折的情况下就很容易出错了,因为很容易冲过头。所以最好的办法是选择一个矩形区域内的所有像素点,计算左右两边的目标颜色的像素点个数差,再用这个差值进行PID计算是最好的。当然这个矩形大小要控制好,个人经验一般循环超过5K次的话,计算速度就赶不上小车速度了。所以可以先用resize函数把图片缩小一点。

在这里插入图片描述
这里介绍了均值滤波算法,没什么好说的,去除一些小噪点用的,如果你用的是一行像素点的方法,噪点的影响比较大,可以用这个算法滤波。但是如果用我建议的矩形区域方法,那小噪点的影响基本上就是微乎其微了,用不着滤波,找好HSV值就够了。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
边缘检测canny函数非常非常好用,因为单个的噪点是构不成边缘的,所以如果要滤波,与其选择那些杂七杂八的滤波算法,还不如选择边缘检测把整个图像二值化了。当然,像后期老师要求根据地面线颜色的变化来选择不同的路线,这个时候肯定就不能用边缘检测了。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在图像匹配中,最重要的依然是选择合适的HSV值进行二值化。要保证目标图像充分和周围的环境区分开来,所以我前面强烈建议先写探测HSV的控件面板,因为HSV值太重要了,直接影响到识别的精度。

在这里插入图片描述
二值化后就是拟合目标图形了,三角形有三个点,四边形有四个点,五边形就有五个点……找到这些点的位置过后就可以用投影变换把要匹配的图像“摆正”了。

在这里插入图片描述

评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值