基于Opencv+python的车流量检测项目

目录

项目介绍

整体流程

调试环境

项目流程

1.预处理

2.汽车识别——去背景算法(KNN/MOG2)

3.统计车流量数目

结尾

源代码

测试视频资料

流程图


项目介绍

本次项目主要采用了传统视觉的方法,对车道车流实现检测,能较为准确的识别出来车道上的车辆数目。由于传统视觉算法本身的局限性,因此也会有识别不准的地方。

整体流程

话不多说,先讲思路,直接上流程图

8dee5f37debe4e85ae1d9040dd51e48e.png

这里把所有预先设定的参数和变量统一称为了“宏”,然后对识别到的每一帧图像进行处理,最后得到理想的效果图。

效果图如下:

c03ec719b3954a3f9a97773acb5922e7.png

调试环境

  • Jupyter Notebook
  • Python    3.9.12
  • OpenCv  4.5.5

项目流程

1.预处理

        #灰度
        cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
        #高斯去噪
        blur=cv2.GaussianBlur(frame,(5,5),5)
        mask=removebg.apply(blur)
        
        #腐蚀
        erode=cv2.erode(mask,kernel,iterations=2))#iteration=n 迭代n次
        #膨胀
        dilate=cv2.dilate(erode,kernel,iterations=2
        #cv2.imshow("x",dilate)
        dst=cv2.morphologyEx(dilate,cv2.MORPH_CLOSE,kernel)

2.汽车识别——去背景算法(KNN/MOG2)

        先介绍KNN算法(因为本次采用的算法为KNN)

        KNN最邻近分类算法的实现原理:为了判断未知样本的类别,以所有已知类别的样本作为参照,计算未知样本与所有已知样本的距离,从中选取与未知样本距离最近的K个已知样本,根据少数服从多数的投票法则(majority-voting),将未知样本与K个最邻近样本中所属类别占比较多的归为一类。

  在Opencv中,KNN算法已经被封装好了,所以我们直接调用就可以。

#KNN算法去背景
removebg=cv2.createBackgroundSubtractorKNN()

        MOG2是一个以混合高斯模型为基础的前景/背景分割算法。使用 K(K=3 或 5)个高斯分布混合对背景像素进行建模。使用这些颜色(在整个视频中)存在时间的长短作为混合的权重。背景的颜色一般持续的时间最长,而且更加静止。这个函数有些可选参数,比如要进行建模场景的时间长度,高斯混合成分的数量,阈值等。将他们全部设置为默认值。然后在整个视频中我们是需要使用backgroundsubtractor.apply() 就可以得到前景的掩模了。移动的物体会被标记为白色,背景会被标记为黑色的。使用方法同上,在此不过多赘述。

3.统计车流量数目

本次统计采用的方法为:找到矩形框的中心点经,当该点经过提前所设定好的直线时,车辆数+1

计算中心点的函数:

def center(x,y,w,h):
    x1=int(w/2)
    y1=int(h/2)
    cx=x+x1
    cy=y+y1

统计车流量的代码部分:

 cpoint=center(x,y,w,h)
            cars.append(cpoint)#将中心点储存到cars数组中
            
            for (x,y) in cars:
                if(y>lineHeight-7 and y<lineHeight+7):
                    Car_nums +=1
                    cars.remove((x,y))
                    print(Car_nums)

最后在经过一些简单的处理,该项目就实现了。

结尾

附源代码:

import cv2
import numpy as np
lineHeight=550
#穿过直线的车的数量
Car_nums=0
#储存中心坐标的数组
cars=[]
#KNN算法去背景
removebg=cv2.createBackgroundSubtractorKNN()
def center(x,y,w,h):
    x1=int(w/2)
    y1=int(h/2)
    cx=x+x1
    cy=y+y1
    
    return cx,cy

video=cv2.VideoCapture('D://video.mp4')

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))

while True:
    ret,frame=video.read()
    if(ret!=0):
        #灰度
        cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
        #高斯去噪
        blur=cv2.GaussianBlur(frame,(5,5),5)
        mask=removebg.apply(blur)
        
        #腐蚀
        erode=cv2.erode(mask,kernel,iterations=2)#iteration=n 迭代n次
        #膨胀
        dilate=cv2.dilate(erode,kernel,iterations=2)
        #cv2.imshow("x",dilate)
        dst=cv2.morphologyEx(dilate,cv2.MORPH_CLOSE,kernel)
        #cv2.imshow("x1",dst)
                          
        #画出检测线
        cv2.line(frame,(10,lineHeight),(1400,lineHeight),(255,0,0),2)
        counts,h=cv2.findContours(dst,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
        #遍历所有轮廓
        for(i,c) in enumerate(counts):
            (x,y,w,h)=cv2.boundingRect(c)
            
            if((w<=90) and (h<=90)):
                continue
            if(y<66):
                continue
            #将有效的车绘制出来
            cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),2)
            cpoint=center(x,y,w,h)
            cars.append(cpoint)#将中心点储存到cars数组中
            
            for (x,y) in cars:
                if(y>lineHeight-7 and y<lineHeight+7):
                    Car_nums +=1
                    cars.remove((x,y))
                    print(Car_nums)
        
        cv2.putText(frame,"Cars nums:"+str(Car_nums),(500,60),cv2.FONT_HERSHEY_DUPLEX,1,(255,0,0))
        cv2.imshow("video",frame)
        
    key=cv2.waitKey(1)
    if(key==27):
        break

video.release()
cv2.destroyAllWindows()        

附上测试视频资料:

链接: https://pan.baidu.com/s/1u_hjCtL3FR6FzeEVQar7wg?pwd=2Y1p 
提取码:2Y1p

较为形象的流程图:9c13a7945a6447f58a477ed753dd077d.png

Logtyu
关注 关注
  • 21
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
python车流量检测车流统计车辆计数yolov5 deepsort车流检测配置gpu和训练模型视频教程
04-09
python车流量检测车流统计车辆计数yolov5 deepsort车流检测配置gpu和训练模型视频教程 项目下载:https://download.csdn.net/download/babyai996/85020479
机器视觉实验二:道路车流量计数实验(OpenCV-python代码).zip
02-10
机器视觉实验二:道路车流量计数实验(OpenCV-python代码).zip
酷炫,Python实现交通数据可视化!
最新发布
Trb201013的博客
04-27 1068
TransBigData是一个为交通时空大数据处理、分析和可视化而开发的Python包。TransBigData为处理常见的交通时空大数据(如出租车GPS数据、共享单车数据和公交车GPS数据等)提供了快速而简洁的方法。TransBigData为交通时空大数据分析的各个阶段提供了多种处理方法,代码简洁、高效、灵活、易用,可以用简洁的代码实现复杂的数据任务。数据预处理:对数据集提供快速计算数据量、时间段、采样间隔等基本信息的方法,也针对多种数据噪声提供了相应的清洗方法。
车流量检测算法
09-15
介绍了目前基于视频的车辆检测算法的优点和缺点,在此基础上提出了一种新的算法 ,该算法自适应能力强 ,计算量小,可正确判断有无车辆、完成车辆的计数 ,实现车流量计算、车速估计. 采用了预估校正和相关性修正等措施
OpenCVpython) 大作业全记录(更新中)
bwhaxx的博客
04-04 299
防止窗口自动在运行结束后关闭。4. 直方图均衡化代码。
python车流量检测车流统计车辆计数yolov5 deepsort车流检测
热门推荐
babyai996的博客
03-30 1万+
python车流量检测车流统计车辆计数yolov5 deepsort车流检测 基于之前的yolo+deepsort上,将person类别改为车辆类别,因为coco数据集中,车辆类别有几种【car,bus,truck】,所以都要保存下来。 首先来看一下yolov5+deepsort的车辆跟踪初始效果,看着密密麻麻的框和id,思考一下该如何去设计这些规则进行统计。 python车流量检测双向车流计数 python车流量检测车流统计车辆计数yolov5deepsort车流检测-机器学习文档类资..
OPENCV车流检测项目Python
m0_63342040的博客
10-23 1818
使用背景剪除(createBackgroundSubtractorKNN或createBackgroundSubtractorMOG2)将车辆与背景分离,对车辆进行检测。然后获取每个车辆轮廓的中心点。当某个车辆轮廓的中心点与检测线范围重合时,车辆计数+1,并将该车辆remove掉,避免再次检测。二、轮廓检测、经过上面的处理后图像上只剩下车辆和难以消除的噪点,此时使用findContours寻找轮廓,经过筛选排除不是汽车的轮廓,随后框出汽车的轮廓。视频的效果是框选出被检测的车辆和显示经过检测线的车辆的数量。
【精选】OpenCV&YOLOv5的车流量统计系统(源码&部署教程)
cheng2333333的博客
12-24 1432
【精选】OpenCV&YOLOv5的车流量统计系统(源码&部署教程)
视频中的车流量统计
あずにゃん梓喵的博客
07-19 2396
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 4.10. 视频中的车流量统计 学习目标 了解视频中处理车流量统计的方法 前面我们已经完成了视频中车辆的检测功能,下面我们对车辆进行跟踪,并将跟踪结果绘制在视频中。 主要分为以下步骤: 对目标进行追踪 绘制车辆计数结果 将检测结果绘制在视频中并进行保存 1.对目标进行追踪 # yolo中检测结果为0时,传入跟踪器中会出现错误,在这里判断.
多车检测(基于视频的车辆跟踪及流量统计)(python代码)
05-03
项目是基于视频的车辆跟踪及流量统计,是一个可跟踪路面实时车辆通行状况,并逐帧记录不同行车道车流量数目的深度学习项目。 该项目对输入的视频进行处理,主要分为以下几个步骤: 使用YOLOV3模型进行目标检测 使用SORT算法进行目标追踪,使用卡尔曼滤波器进行目标位置预测,并利用匈牙利算法对比目标的相似度,完成车辆目标追踪 利用虚拟线圈的思想实现车辆目标的计数,完成车流量的统计
基于FairMOT的车流量统计
m0_63642362的博客
11-29 1473
车辆重识别,车流量统计,MOT
python 交通流量数据
12-27
用于岭回归模型进行交通流量预测的基础数据。根据已有的交通流量数据,对以后时间的车流量的信息进行回归预测。数据来源:某路口的交通流量监测数据,记录全年小时级别的车流量
opencvc车流量统计
04-17
一位研究生的毕业设计程序,希望对大家有用。
手把手教你实现-基于OpenCV车流量统计和车速检测代码
06-08
实现了一个简单的车辆速度估计和车流量统计的GUI应用,它使用了Haar级联检测器和相关跟踪器来检测和跟踪视频中的车辆,并通过图像处理和数学计算来估计车辆的速度。 包含功能函数如下: 1.导入必要的库和模块,包括...
基于Python+opencv车流量识别系统源码,能够对上下两个方向的车辆进行检测,具有较小的误差
02-23
基于Python+opencv车流量识别系统源码,能够对上下两个方向的车辆进行检测,具有较小的误差
基于pythonopencv车流量计数
12-10
包含源代码和示例视频 供君享用
Python基于OpenCV的交通路口红绿灯控制系统设计毕业设计.zip
10-21
随着科技的不断进步,我们的生活变得越来越离不开各种各样的程序。程序已成为我们日常生活和工作中不可或缺的一部分,它们可以帮助我们更高效地完成任务,节省时间和精力。今天,我要向大家介绍一款功能强大、用途...
车辆计数系统 python实现
qq_36614831的博客
07-07 7149
车辆计数系统 主要内容: 1、目标检测:背景差分法 2、目标跟踪:DeepSort跟踪算法 3、计数器:多线程定时计数 1车流量计数系统设计 为了能够实时准确地对交通路口地车流量进行统计,在本论文中,首先,我们采用背景差分法对进入交通路口摄像头中的车辆进行检测,由于环境光等干扰因素的影响,会导致不同目标重叠在一起,这将大大降低本系统的检测效果,因此,我们需要对每帧图像进行形态学预处理,消除干扰;其次,使用Deepsort跟踪算法对检测出来的车辆进行跟踪,为了避免目标被遮挡后ID跳变引..
大创项目推荐 深度学习+opencv+python实现车道线检测 - 自动驾驶
laafeer的博客
12-22 2174
🔥 优质竞赛项目系列,今天要分享的是🚩 **基于深度学习的自动驾驶车道线检测算法研究与实现 **该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!🥇学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:4分创新点:4分🧿🧿。
基于opencv-python的车牌识别 云盘下载
06-23
### 回答1: 基于opencv-python的车牌识别是一种利用计算机视觉技术实现的车牌自动识别系统,通过将车牌图像输入到系统中,利用opencv-python库中的图像处理算法和人工智能算法进行处理,最终得到车牌号码。 云盘下载是指将该系统提供的代码和相关文件上传到云盘,方便用户下载和使用。由于该系统所需的文件较大,因此使用云盘下载可以更加方便和快捷。 基于opencv-python的车牌识别的优点是准确度高,识别速度快,且能够适应不同光照和角度的情况,因此具有广泛的应用价值。例如,在道路交通安全管理中,可以利用该系统自动识别车牌号码,提高交通事故的处理效率;在车辆卡口管理中,可以利用该系统对过往车辆进行车牌识别,实现自动化的流量统计和监管。 总之,基于opencv-python的车牌识别是一种实用的计算机视觉技术,通过云盘下载可以更加方便快捷地实现应用。 ### 回答2: 基于opencv-python的车牌识别是一种使用Python编程语言和OpenCV计算机视觉库进行车牌识别的技术。这种技术可以通过静态图像或视频流识别车牌,以实现智能交通、车辆管理等目的。这种技术在实际应用中可以提高车辆追踪的效率,减少违章交通行为和交通事故的发生。 在进行车牌识别时,需要通过使用Python编程语言和OpenCV图像处理工具对图片进行处理,从而检测出车牌的位置和角度。接下来,需要使用深度学习算法对检测到的车牌信息进行识别,并将车牌中的字符进行提取和解析。 为方便下载和使用,可以将车牌识别的代码和所需的依赖文件打包成一个ZIP或RAR文件,并上传到云盘中。这样,用户可以通过下载并解压缩文件来快速使用车牌识别技术,同时可以在实际应用中根据需要进行二次开发和优化。近年来,车牌识别技术在智能交通和社会管理领域得到广泛应用,帮助提高城市管理和公共安全管理水平。 ### 回答3: 基于opencv-python的车牌识别是一种将图像处理技术应用于车牌识别的方法,利用opencv-python这一开源计算机视觉库,结合现代物联网技术,可实现快速、精准、高效的车牌识别。 在使用基于opencv-python的车牌识别前,我们需要在云盘上下载相关程序,安装好opencv-python和其他相关依赖库。在准备工作完成后,我们可以将待识别的车牌图像导入到识别系统中。车牌图像可以是通过摄像头获取的实时图像,也可以是已保存在本地的图片。 基于opencv-python的车牌识别系统会自动对车牌图像进行预处理,包括二值化、去噪、定位等步骤。在车牌图像预处理完成后,系统会提取车牌上的字符信息,并基于机器学习算法对字符进行识别。最终,系统将结果输出到显示屏上,同时也可以保存到计算机本地或者上传到云端进行存储。 基于opencv-python的车牌识别技术已经日益成熟,应用也越来越广泛。在交通管理、车辆识别、停车管理等领域都可以发挥重要作用。与传统的车牌识别技术相比,基于opencv-python的车牌识别技术更加精准、高效、便捷。随着互联网技术的不断发展和普及,相信这一技术的应用前景将会更加广阔。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Ubuntu20.04安装glog和gflags 5220
  • 基于Opencv+python的车流量检测项目 4815

最新评论

  • Ubuntu20.04安装glog和gflags

    CSDN-Ada助手: 推荐 CS入门 技能树:https://edu.csdn.net/skill/gml?utm_source=AI_act_gml

大家在看

  • C语言 | Leetcode C语言题解之第154题寻找旋转排序数组中的最小值II
  • Python | Leetcode Python题解之第154题寻找排序数组中的最小值II
  • Python | Leetcode Python题解之第153题寻找旋转排序数组中的最小值
  • C++ | Leetcode C++题解之第153题寻找旋转排序数组中的最小值
  • Golang | Leetcode Golang题解之第154题寻找旋转排序数组中的最小值II

最新文章

  • Ubuntu20.04安装glog和gflags
2022年2篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司白山SEO按天收费哪家好巢湖网站设计模板价格唐山百度竞价包年推广多少钱宜昌百度网站优化推荐晋中网站建设公司赣州网站优化按天收费哪家好秦皇岛百度标王公司永州企业网站建设黄冈英文网站建设推荐青岛网站优化按天扣费公司大浪百搜标王价格海西网站推广系统价格玉林网站改版武威企业网站设计公司绵阳推广网站推荐龙华企业网站设计价格宝鸡外贸网站制作哪家好汕尾建站营口外贸网站制作价格蚌埠网站建设多少钱湖州seo娄底网站优化排名公司泰安网站制作公司金昌网站推广工具哪家好赤峰seo价格延安关键词排名推荐襄阳网站改版价格长葛百度爱采购安庆营销型网站建设报价潜江建网站推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化