航拍无人机视角下车流量检测车流量多车型计数无人机车流检测yolov5

最近在研究告诉高速公路无人机航拍多车型车流量检测,分为car和bus,这里主要说一下遇到的问题以及想法,如有问题欢迎大家指正。

设计思路以及遇到的问题
第一步是完成物体(也就是车辆)的检测,这里有两种解决办法,第一种办法是使用opencv的形态学处理,比如背景消除、做帧差、膨胀腐蚀等等,这个办法比较基础,但是要处理好需要调整诸多细节,我的细节调整的不够好,因此实现时会遇到许多小问题。第二个办法是直接实现物体的识别,需要用到一定的训练模型,我测试过googlenet和yolo,最终选择了yolov5
第二步是追踪,这里用了deepsort追踪
第三步是计数,在CSDN 中找到一篇博文,提到的做法是建立一个类,每次出现新的目标就创建一个类,旧的目标就替换坐标,这个做法后来证实的确有效。但问题是如何判断这一帧的车辆是否新的目标,我给出的解决办法是创建一个列表,将第一帧的所有目标(也就是每一个对象)存入,第二帧的时候遍历每一个目标与列表的每一辆车,判断x,y的距离,如果变化不超过车的长度和宽度,就认为这是同一辆车(也有学长告诉为特征值匹配的办法,也许更可行,但我能力不够没有学到这里,所以没有采用)。

待检测视频链接:

航拍广东高速公路风景,飞机上看更震撼,美呆了!,旅游,旅途风光,好看视频航拍广东高速公路风景,飞机上看更震撼,美呆了!,本视频由客家人阿牛哥提供,751次播放,好看视频是由百度团队打造的集内涵和颜值于一身的专业短视频聚合平台https://haokan.baidu.com/v?pd=wisenatural&vid=9283681397163393174

补充:我发现了一个csdn大哥写的计数算法。直接拿来用了。效果很棒。完美解决航拍无人机车流量计数。

检测图:

效果图:

实现程序:


labelsPath = "./yolo-coco/coco.names"
LABELS = open(labelsPath).read().strip().split("\n")np.random.seed(42)
COLORS = np.random.randint(0, 255, size=(200, 3),dtype="uint8")weightsPath = "./yolo-coco/yolov5.weights"
configPath = "./yolo-coco/yolov5.cfg"net = cv2.dnn.readNetFromDarknet(configPath, weightsPath)
ln = net.getLayerNames()
ln = [ln[i - 1] for i in net.getUnconnectedOutLayers()]# ----------------------------------------------------------------------------------------------------------------------
"""
# cv2.VideoCapture() --- 里面参数如果地址,打开视频文件 --- 里面参数是0/1,打开摄像头
# 当参数是0的时候,打开计算机的内置摄像头,当参数为1的时候打开计算机的外置摄像头
# (W, H) = (None, None) --- 视频的宽度和高度,初始化视频编写器(writer)和帧尺寸
"""
# ----------------------------------------------------------------------------------------------------------------------vs = cv2.VideoCapture('./input/123.mp4')
(W, H) = (None, None)# ----------------------------------------------------------------------------------------------------------------------
"""
# try to determine the total number of frames in the video file
# 打开一个指向视频文件的文件指针,循环读取帧 --- 尝试确定视频文件中的总帧数(total),以便估计整个视频的处理时间;
# CV_CAP_PROP_FRAME_COUNT --- 视频的帧数
# 这里使用是处理视频的时候固定的过程,不必过度的纠结其使用 ---
#                      if imutils.is_cv2():
#                         prop = cv2.cv.CV_CAP_PROP_FRAME_COUNT
#                      else:
#                         prop = cv2.CAP_PROP_FRAME_COUNT
#
# vs.get(prop) --- cv2.VideoCapture.get(prop) --- 得到视频的总帧数
# print("[INFO] {} total frames in video".format(total)) --- 输出视频的帧数
"""
# ----------------------------------------------------------------------------------------------------------------------
try:prop = cv2.cv.CV_CAP_PROP_FRAME_COUNT if imutils.is_cv2() \else cv2.CAP_PROP_FRAME_COUNTtotal = int(vs.get(prop))print("[INFO] {} total frames in video".format(total))except:print("[INFO] could not determine # of frames in video")print("[INFO] no approx. completion time can be provided")total = -1while True:# ----------------------------------------------------------------------------------------------------------------------"""# cv2.VideoCapture.read() ---> 读取视频,在while中循环读取视频的frame# vs.read() ---> 得到两个参数,其中ret是布尔值,如果读取帧是正确的则返回True,# 如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。# 第一个参数为False的时候,if not grabbed --- True --- 循环结束,"""(grabbed, frame) = vs.read()if not grabbed:breakif W is None or H is None:(H, W) = frame.shape[:2]

项目下载:

python小目标识别航拍车流量检测统计航拍车辆计数yolov5-深度学习文档类资源-CSDN下载

python航拍无人机视角下多车型车流量检测车流量多车型计数无人机车流检测yolov5相关推荐

  1. 【高空无人机视角下的路口车辆与行人检测跟踪与轨迹刻画】

    [高空无人机视角下的路口车辆与行人检测跟踪与轨迹刻画] 背景需求 可参考的方法 1. opencv + python 实现目标跟踪的方法: 主要代码 ① main.py ② items.py 检测效果 ...

  2. 目标检测~无人机视角

    本文综合考察了无人机视角下的目标检测研究进展近年的发展和进步,总结并分析了无人机视角下目标检测所面临的不均衡挑战问题,然后对已有算法进行了归类.分析和比较,评述代表性方法的技术特点和区别,并系统对比分 ...

  3. 图文并茂详细教程之——用pixhawk飞控组装一台S500四轴无人机(下)(苍穹四轴)

    摘自:https://mp.weixin.qq.com/s?__biz=Mzg2NDI0MzU5NA==&mid=2247484117&idx=1&sn=ac0c6b1a99b ...

  4. 图文并茂详细教程之-- 用pixhawk飞控组装一台F450四轴无人机(下)

    摘自:https://mp.weixin.qq.com/s/1vXfYPgaQEkXLfpSnjJqAw 图文并茂详细教程之-- 用pixhawk飞控组装一台F450四轴无人机(下) CJKK 苍穹四 ...

  5. 学术界、管理人、投资者视角下的因子投资

    转 学术界.管理人.投资者视角下的因子投资 作者:石川,北京量信投资管理有限公司创始合伙人,清华大学学士.硕士,麻省理工学院博士.知乎专栏:https://zhuanlan.zhihu.com/mit ...

  6. Python培训班线上线下哪种靠谱

    Python近几年在人工智能领域的快速发展,引起了很多人的注意,各种Python培训机构也越来越多,很多零基础的同学都想通过报培训班学习,目前互联网的发达,Python培训分为线上和线下,那么Pyth ...

  7. 使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件、清除缓存文件、解救C盘、拒绝C盘爆炸

    使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件.清除缓存文件.解救C盘.拒绝C盘爆炸 目录

  8. Python多分类问题下,micro-PR计算以及macro-PR计算

    Python多分类问题下,micro-PR计算以及macro-PR计算 #二分类的Precision和Recall计算公式 在普通的二分类问题中通过混淆矩阵可以轻松地计算出来Precison和Reca ...

  9. 政、企、学三方视角下的智慧城市发展 | 2020中关村论坛“人工智能与城市可持续发展论坛”成功举办...

    人工智能技术在城市中孕育,城市亦为人工智提供了广阔的应用场景.如何更好地将智能与城市结合,是政府.企业与学术三界人士共同关心的重要问题.2020中关村论坛"人工智能与城市可持续发展论坛&qu ...

最新文章

  1. 《理解 OpenStack + Ceph》---来自-[爱.知识]-推荐
  2. SWAP使用情况以及muma介绍
  3. Nginx Http认证 实现访问网站或目录密码认证保护
  4. 〖Python〗-- 性能相关及深度优先与广度优先
  5. c语言pi的乘法,c语言 根据公式求出π的近似值。
  6. 交华为换机access配置_华为交换机VLAN内Proxy ARP配置示例
  7. http协议下需要服务器推送吗,HTTP/2.0 服务器推送实现
  8. Android音频开发(2):如何采集一帧音频
  9. Atitit 跨平台的系统截图解决方案
  10. 【Javascript】学习指南
  11. 酷Q on Docker 2.0
  12. PCB制图 | Altium Designer 20下载与安装
  13. 魔兽争霸3 the oracle,疯狂SQL之魔兽争霸
  14. 开发了一个监控网站与接口宕机,并推送 App 消息提醒的程序
  15. 微信weixin://xxx 分析
  16. Java中Lambda表达式和stream的使用
  17. Python调用百度AI,实现音频转换文字(标准版)
  18. Java代码是怎么运行的?
  19. GitHub如何从远程库克隆
  20. 实验四 基于PPTP的远程VPN实现【网络安全】

热门文章

  1. 将数组中的对象按照浏览器的x/y轴的显示方式进行排序
  2. 音频文件格式有哪些?误删音频文件如何恢复?
  3. 树莓派 Raspberry Pi (bullseye)更换阿里云源方法
  4. 云服务器+windows iis系统+微信App平台程序+vb.net后台服务开发流程
  5. 易语言执行mysql命令行_易语言教程之MySQL[3]执行SQL语句
  6. 双十一选IT培训?都在这,超低价
  7. (已更新)社区论坛小程序源码,功能齐全,简洁漂亮,前端+后端
  8. 四旋翼无人机学习第14节--PCB Editor简单绘制封装-自动生成封装
  9. 【SoapUI】SoapUI工具简介及安装
  10. RK平台USB摄像头FAQ