基于OpenCV的移动物体检测和目标跟踪

电脑杂谈  发布时间:2020-02-14 09:01:29  来源:网络整理

opencv目标识别程序_opencv识别_opencv识别特定物体

无人机的今后在于机器视觉,而机器视觉是离不开的,也就是说无人机的今后离不开图像处理,去年电赛的经历,让我为此深有感受,包括电赛的寻线跟追小车,我们都是使用的openmv,首先我要承认openmv的确不错,至少在色块检测中给了我们多大的忙,关键是易于上手,调试方便快捷。但是其处理性能实在不敢恭维,尤其是做人脸辨识,手势识别,光流定点之类的,性能不够用,我尤其是想做特征点测试的,但是openmv根本实现不了这些高大上的功能,而且距离也受限制。思考再三我们准备采取树莓派,但是实际测试尤其是跑光流的之后,也是非常卡,那就很不用说人脸辨识和特点点评估等等的了。目前看来只有使用手机处理了,但是电脑在这次的电赛中通常是不允许使用的,如果是真爱,你就不会为了比赛而比赛,所以我们今天的opencv地面站就诞生了。

视频链接:

2018年四轴飞行器串级PID姿态控制_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili图标2018年四轴飞行器串级PID姿态控制_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili图标2018年四轴飞行器姿态解算AHRS和IMU_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili图标

这就是目前地面站所整合的几个功能。大家不要先看这几个功能,和openmv比还是非常强悍的。尤其是体系3和方式4,我可以不诚实的说,这个科技尚未是现今网上开源当中效果较好的了。目前我开放了地面站模式3的用途供大家使用,实现的功能就是鼠标单击感兴趣物体,鼠标选中到什么位置飞机就飞到什么位置,再也不用考虑到光线跟形状的差别了,其特点不知道比甩了简洁的线条检测几条街,具体介绍请往下看。

1要连接USB或者USB接口的图传接收机

2在地面站打开运行之前,电脑需要先连接串口4(COM4),打开设备管理器查看com4是否正确开启,否则程序能够正常运行。可以使用USB转TTL模块,或者数传接口。上位机数据发送的占空比设置为115200,因此数传接口的信噪比也需要设置为115200,否则接收数据会出现乱码。

opencv目标识别程序_opencv识别特定物体_opencv识别

3地面站功能展示仅限于模式3opencv目标识别程序,鼠标选取感兴趣物体,地面站通过串口把目标物体的坐标发送出来。追踪区别于camshift,效果比camshift要好的多,检测距离可以超过几十米。

开发者可以用这个地面站来进行高空跟踪,目标定位。

推荐:

图传接收机-->牛牛航模5.8G图传手机接收机 ,

图传发射机-->熊猫发射机5.8G

图传-->弹弓

注意:图传测试的之后建议在空旷的户外,效果很好,室内也是可以的,但是鉴于墙壁反射的缘由图像会不太稳定

opencv识别特定物体_opencv目标识别程序_opencv识别

通过测试,程序无论是在无人机运动状况下抑或在静止状态下,追踪效果都更稳定。

注意我们的主要任务是图像处理,提取目标数据opencv目标识别程序,至于你怎么用数据来控制飞机飞行就靠你自己发挥了,不过我们也简单实现了一个点那里飞哪儿的飞控功能。

地面站通讯协议:UAV地面站每隔10ms,发送一组字符串char[10]={‘s’,,,,’#’},波特率115200

Char[0]=’s’,Char[9]=’#’为校验字符

Char[1],char[2],分别代表目标中心坐标X的高8位和低8位 (16进制表示)

char[3],char[4]分别代表目标中心坐标Y的高8位和低8位(16进制表示)

剩余其他字符暂时保留。

opencv目标识别程序_opencv识别特定物体_opencv识别

目标追踪代码编写

考虑到部分同学可能不知道怎么修改基于无人机地面站追踪的飞控程序,特此做了一个比较具体的教程。代码已经顺利移植到飞控上,而且就在今天3月25号已经测试了,代码可用,但是PID控制参数必须改进。仅供各位参考。以下程序适合市面上所有开源的无人机飞控。大家只应该把一个c文件和一个h头文件添加到你的飞控程序,然后根据以下的方法设置即可。

第一步向飞控程序上面添加c文件和.h头文件

这两个文件只是小编整理的哦,花了我每天时间呢。可以直接添加到任何开源飞控,不依赖于任何飞控系统。当然变量跟函数的命名不能和你的自身飞控代码定义的冲突哈!其实这个代码我们电赛教学视频上面讲解的巡线跟追踪模式一样,巡线跟追车其都是属于位置控制。

第二步向飞控程序上面添加串口接收程序:

opencv识别特定物体_opencv识别_opencv目标识别程序

我这里以串口5为例。

首先在main函数初始化程序部分先初始化串口

接下来写串口接收中断部分

好啦,写到这个位置我们的串口数据接收部分就完成了,那么接下来就该写我们拿这个数据来进行位置控制,

第三步 找到你的飞控程序的任务调度部分,添加第一步.c文件上面的位置控制函数

第四部姿态控制部分

找到你的飞控程序的串级姿态控制的的外环(角度环),添加我们的姿态控制视角


本文来自电脑杂谈,转载请注明本文网址:
http://xinshanjie.com/a/jisuanjixue/article-140716-1.html

    相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 郑仆射
      郑仆射

      首先是判明其意图和性质

    热点图片
    拼命载入中...