电赛F题 视觉openmv代码

2021年电赛 F题 视觉部分 (openMV4 plus)记录

记录下比赛

emmmm选了F题,别的都没思路,哈哈哈哈哈,对小车比较亲切

赛题一出,就确定了大概率是F题了,看了看题认为是“数字识别”+“巡线小车” 扩展部分的话就是“无线通信”+“路径规划(或者路线记忆?😂)”

刚开始是想把“地图数据”存在32里面:规划好每个病房路线,到时候通过摄像头识别并返回实际病房数字,与已规划路线匹配,这样回来的就更精准了。

以下部分摄像头仅负责1-8识别以及识别”病房虚线“ 说说图像识别(openMV4 plus)

在edge impulse训练数字识别,很多人都是这么想的,但是在运动中不可行。帧率太低,跟不上反应。(此处可以使用停车识别数字)尽管显示98%正确率(数据集1800张,重拍数据集了好多次),但是考虑到环境等因素对其检测的不利因素,改用其他方案,当然有很多组是识别成功了的。 改为模板识别,采用灰度以提高帧率,识别效果还行,但是局限的是:摄像头角度、距离不能有太大变化,且处理8张照帧率真的很一般,行进中识别肯定不行。

根据赛道结构易知需对(“1”“2”)(“3”-“8”)不同处理,且需重点处理4位数

通过将各种情况模块化,将计算量分散,帧率上去了!

思路大概是这样:

“”" 先写个初始亮红灯 把1-8的图像遍历 # 用来识别目标值,帧率不需要很高 return 目标值 传回目标值到32 openmv判断目标值 灭红灯 进入对应模块(增加帧率) 传回转向方式到32 “”" “”" 当aim为1或2时,将aim发送给stm32,使stm32在到达第一个路口时,直接进行左转或右转。 当aim为3-8时,进行行进中识别。 在行进中只对识别到2个或3个数(可补充4位数的情况)的情况进行处理(因为小车限高以及为保持识别准确率,摄像头的角度需要合理调整;由于同时匹配到4个数的概率很小(图像在边缘时匹配率较低),在匹配识别到3个数的时候就可以根据其相对位置判断左转还是右转) “”"

组合调第一个车,速度与图像识别不可兼得,最后还好。

返回给32的是 目标值 和 行为指令(左,右,停)

之后时间就是双车链接,以不同目标位置把第二辆车的转向方式稍作修改以及其他…

当然用树莓派或别的平台处理效果更好

代码

匆忙写的,没有优化:无需停车识别数字,但仍有部分小问题 方案的缺陷在于摆放的数字需要紧挨在一起 {aim} (1)左 (2)右 (3)停

经验分享 程序员 微信小程序 职场和发展