问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

STM32送药小车(四):Openmv实现数字识别,巡线以及串口通信

发布网友 发布时间:2024-10-19 18:06

我来回答

1个回答

热心网友 时间:2024-10-29 22:05

我们使用Openmv中的特征点检测进行数字识别,并通过设置红色阈值实现巡线,最后通过串口通信将数字及红线坐标发送给主控芯片。

一、Openmv实现数字识别

对于数字识别,最初我们尝试使用模板匹配,但发现过程复杂且准确率不高。因此,我们最终选择了特征点检测的方法。

1.关于模板匹配的思路:

我们首先通过方框检测找到数字卡片的外边框,然后对框内的图像进行模板匹配。这种方法比直接使用整张图像的准确度更高,但容易受到外界干扰,方框大小可能小于模板大小,导致程序无法正常运行。尽管我们增加了ROI的宽度和长度,但仍然会出现错误。经过测试,我们发现特征点匹配可以达到我们的要求。

2.关于特征点检测的思路:

我们通过检测图像特征点,并与保存在SD卡的模板进行比对,找到特征点数最多的模板,即为我们要找的数字。然后,我们通过比对一定次数,选择比对成功次数最多的数字作为最终识别结果。在小车任务实现中,我们采取了以下策略:

由于近端病房只使用数字1和2,因此我们只对这两个数字的特征点进行比对,而当小车到达远端病房时,对其他数字进行特征点比对,这样可以大大提高识别的准确性。

部分代码如下:

二、巡线

1.基本巡线

思路:将摄像头一帧图片的上半部分划分为三个平行的感兴趣区,在三个感兴趣区中分别寻找最大的红色色块,获得三个中心坐标。然后,给予其不同的权重后计算平均质心坐标,用此质心坐标计算得到巡线时的偏转角度。

只将一帧图片的上半部分是因为下半部分容易受到小车的阻挡或阴影干扰。

附上部分代码:

2.识别十字

我们通过判断图像左上方和右上方区域是否有红线来识别十字。如果左上角和右上角都有红色部分,那么我们认为小车到达十字路口处。

部分代码:

三、串口通信

1.数据打包

有人可能会问为什么不直接通过串口发送字符串然后使用sscanf来解析?串口发送字符串(ASCAII编码)的方式虽然简单,但解析不稳定,易丢数据。ASCAII编码易出错,缺乏纠错功能。因此,我采用二进制传输,整数直接发送,浮点数放大去除小数位,然后以C语言的int,short,char的拆分逐8位形式逐位发送。接收后先计算校验累加,再重组。这种方式长期使用稳定可靠。

这样发出来的数据(int,short型)都是低位的字节在前,比如发送整型数9,得到的数据为(0x09 0x00 0x00 0x00)

附上代码:

2.Openmv及STM32的串口通信

直接附上STM32解码代码:

总结

Openmv功能强大,不仅可以用于图像识别处理,其他功能大家可以去星瞳科技官网学习,里面有例程讲解和丰富的资料。

热心网友 时间:2024-10-29 22:04

我们使用Openmv中的特征点检测进行数字识别,并通过设置红色阈值实现巡线,最后通过串口通信将数字及红线坐标发送给主控芯片。

一、Openmv实现数字识别

对于数字识别,最初我们尝试使用模板匹配,但发现过程复杂且准确率不高。因此,我们最终选择了特征点检测的方法。

1.关于模板匹配的思路:

我们首先通过方框检测找到数字卡片的外边框,然后对框内的图像进行模板匹配。这种方法比直接使用整张图像的准确度更高,但容易受到外界干扰,方框大小可能小于模板大小,导致程序无法正常运行。尽管我们增加了ROI的宽度和长度,但仍然会出现错误。经过测试,我们发现特征点匹配可以达到我们的要求。

2.关于特征点检测的思路:

我们通过检测图像特征点,并与保存在SD卡的模板进行比对,找到特征点数最多的模板,即为我们要找的数字。然后,我们通过比对一定次数,选择比对成功次数最多的数字作为最终识别结果。在小车任务实现中,我们采取了以下策略:

由于近端病房只使用数字1和2,因此我们只对这两个数字的特征点进行比对,而当小车到达远端病房时,对其他数字进行特征点比对,这样可以大大提高识别的准确性。

部分代码如下:

二、巡线

1.基本巡线

思路:将摄像头一帧图片的上半部分划分为三个平行的感兴趣区,在三个感兴趣区中分别寻找最大的红色色块,获得三个中心坐标。然后,给予其不同的权重后计算平均质心坐标,用此质心坐标计算得到巡线时的偏转角度。

只将一帧图片的上半部分是因为下半部分容易受到小车的阻挡或阴影干扰。

附上部分代码:

2.识别十字

我们通过判断图像左上方和右上方区域是否有红线来识别十字。如果左上角和右上角都有红色部分,那么我们认为小车到达十字路口处。

部分代码:

三、串口通信

1.数据打包

有人可能会问为什么不直接通过串口发送字符串然后使用sscanf来解析?串口发送字符串(ASCAII编码)的方式虽然简单,但解析不稳定,易丢数据。ASCAII编码易出错,缺乏纠错功能。因此,我采用二进制传输,整数直接发送,浮点数放大去除小数位,然后以C语言的int,short,char的拆分逐8位形式逐位发送。接收后先计算校验累加,再重组。这种方式长期使用稳定可靠。

这样发出来的数据(int,short型)都是低位的字节在前,比如发送整型数9,得到的数据为(0x09 0x00 0x00 0x00)

附上代码:

2.Openmv及STM32的串口通信

直接附上STM32解码代码:

总结

Openmv功能强大,不仅可以用于图像识别处理,其他功能大家可以去星瞳科技官网学习,里面有例程讲解和丰富的资料。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 我家大伯扬言要杀人,该有什么办法进行自我保护 老是想上厕所,有时候突然间想上厕所,一会儿就又憋不住了,来回好几趟... 这是怎么回事呀 郁闷。装修店铺点编辑--选择图片-里面只有几张其他的... 早上起来想上厕所但就是不出来一天得跑好几次厕所有时候想上却又... 床头挂2个葫芦什么讲究床头挂2个葫芦什么意思 ...是可以删掉?图片空间里包括宝贝图片,包括店铺装修图片等。 建行的“乾元日鑫月溢”理财产品怎么样? 王伯安编辑本段广泛影响 普通话成绩多久可以查 普通话等级划分 上厕所上不出又想上厕所是怎么回事 ...计算的吗?比如说1905年是甲午年,1911年是辛亥年 ,那么1986年,2016年... 为什么我觉得我干什么事情都干不好!玩游戏也是不行!干啥都不行,啥啥... 我的鼻梁骨骨折属于几级工伤 鼻梁骨裂几级伤残 贞子的扮演者叫什么 ...辛亥革命,据此推断,中华民国元年应为干支纪年法的什么年 鬼怪学院贞子是谁演的 女朋友不肯接电话也不肯回短信,对我很冷淡 很失望 ...发信息不回,说很烦躁,最近不想理任何人也不接电话,问他怎么了,她说... ...放寒假了给她发短息打电话都不回还说很烦我讨厌我 openmv向串口发送坐标时数据溢出怎么办 淘宝图片空间图片不能上传到店铺装修怎么办? 店铺装修代码里面有一些网络图片怎么传到自己图片空间 ...CTRL来切换显示,誰教我怎么弄成用SHIFT、CTRL来切换显示的?_百度... 谁会写关于管理会计在我国企业应用现状及发展研究的论文? 什么人要给刘谦造谣生事啊?刘谦得罪了什么人吗? ...搜狗输入法,输入时无法按快捷键shift+ctrl来切换英文和搜狗_百度知 ... 刘谦出了什么意外刘谦被判死刑 输入法不能像平常那样切换Ctrl+Shift没用只能Ctrl+空格,求帮助! 北海道黄杨六月份可以移栽吗 6月份裁北海道黄杨能活吗 黄杨夏季能栽活吗 办公室窗帘什么科目 单位买窗帘下什么科目 单位按窗帘入什么科目 办公室窗帘放什么科目 办公用窗帘下什么科目 哪些蔬菜水果含维他命c和纤维素 为什么全面推进依法治国必须坚持党的领导,走中国特色社会主义道路 ...比较安全,交通便利,周围有好玩的唯美海滩?最好适合两个闺蜜去...