OpenMV识别色块并且与STM32串口通信

任务

比赛要求在三个不同颜色的球球中,识别绿球球的位置,并且用机械臂抓取。然后在通过门之后,识别路标,判断左右转。

串口通信

OpenMV与STM32通信的方式是串口通信,使用openmv简单的串口配置。
因为视觉部分有两个任务,所以用单片机给STM32发送“1”,开始颜色识别,发送“2”,开始特征点识别。不发送则不识别。

我串口一开始使用了正点原子的STM32精英板,串口就是发不出来,串口程序看了无数遍,心里想,自己虽然菜,但是串口还是能写的吧。

直到后来发现没有加跳线帽,感叹一下自己好蠢。

识别色块

代码使用了OpenMV内置函数来找色块,并且把红绿蓝三个颜色的中心位置保存起来,进行比较,串口输出绿球球所处的位置。
还没有写特征点识别的内容。

玄学报错

OpenMV在编译的过程中,如果没有变量提前初始化,直接写

cx = blob.cx()

会出现一定概率的报错,之前调试的过程中,大约60%的几率可以运行,40%的几率编译器会报错,这种同一片代码,同一个编译器,每次运行结果不同,我还是第一次遇到,解决方法也很简单只需要在使用变量前提前初始化即可,报错就不会出现了。有趣而又玄妙的OpenMV!!
虽然解决之后感觉简单,但是最后加上这句话花了我大概三天!!太恶心了!!

cx = 0

随后附上代码

import sensor, image, time, math
from pyb import UART

threshold_index = 0 
thresholds = thresholds = [(11, 15, 19, 35, -27, 35), #red
                           (7, 17, -73, 14, -46, -16
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值