python 进阶:带你学习实时目标跟踪
本文分享自华为云社区《python进阶——人工智能实时目标跟踪,这一篇就够用了!》,作者:lqj_本人 。
前言
本程序主要实现了 python 的 opencv 人工智能视觉模块的目标跟踪功能。
项目介绍
区域性锁定目标实时动态跟踪(适用 警方追捕,无人机锁定拍摄等)
首先先介绍几种 AI 视觉算法
特性:
1.BOOSTING:算法原理类似于 Harr cascdes(AdaBoost),是一种很老的算法。这个算法速度慢并且不准。
2.MIL:比 BOOSTING 准一点
3.KCF:速度比 BOOSTING 和 MIL 更快,与 BOOSTING 和 MIL 一样不能很好的处理遮挡问题。
4.CSRT:比 KCF 更准一些,但是速度比 KCF 慢
5.MedianFlow:对于快速移动的目标和外形比那花迅速的目标效果不好
6.TLD:会产生朵的 false-posittives
7.MOSSE:算法速度非常快,但是准确率比不上 KCF 和 CSRT,在一些追求算法的速度场合很适用
8.GOTURN:OpenCV 中自带的唯一一个基于深度学习的算法,运行短发需要提前下载好模型文件
分别对应的伴生的函数:
详细代码讲解
导入 cv 模块
使用 csrt 算法,引用伴生函数,并赋值给 tracker
读取视频流
先读取到第一帧
使用 selectROI(前景),画框将目标框起,并赋值给 bbox
初始化 tracker,将上面的两个值传入
读取每一帧
根据每一帧来更新 tracker
若读取成功,就定位画框,并跟随
显示视频流
等待 50 毫秒或按空格键退出
释放视频流和释放窗口
完整代码及注释:
结果演示
区域性全部实时动态目标跟踪(适用夜视跟踪,范围性观察等)
思路构建
1.先将实时摄像流或录制视频流,灰度转化并高斯模糊
2.用二值化算法将流中的物体轮廓扩充
3.分别先读到第一帧和第二帧,让其对比
4.寻找对比后,流的轮廓位置,并开启简易模式
5.过滤物体的矩阵轮廓将其定位绘出
详细代码讲解
导入 cv 模块
将视频流转换并让其高斯模糊
二值化扩充
读取视频流或实时摄像流
读取第一帧
读取第二帧
判断 cap 是否为打开状态
若为打开,则第一帧与第二帧比较
寻找比较后的物体轮廓,并开启简易模式
使用方框将视频流中的物体框出,得到矩阵的宽高
若矩阵的面积小于 10(根据视频流中物体的大小来定义),直接无视
将过滤的物体的矩阵轮廓绘出(一定要用 int 整形)
将第一帧显示
将上面赋值的 mask 显示
实现前后帧对比,并定位物体运动轨迹
1.将第二帧赋值给第一帧
2.再将 cap 读到的赋值给第二帧()
等待 50 毫秒或者按空格结束
释放视频流及释放窗口
完整代码及注释:
结果显示
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/efc3f1fe7e0688a337ffb1841】。文章转载请联系作者。
评论