车辆统计项目

                                                                    车辆统计项目
涉及到的内容:
    窗口的展示
    图像和视频的加载
    基本图像的绘制
    车辆识别(基本图像运算和处理,形态学,轮廓查找)
整体流程:
    1.加载视频
    2.通过形态学识别车辆
    3.对车辆进行统计
    4.显示车辆统计的信息
补充知识:
   背景剪处:把不会动的东西叫做背景(blackground),能动的物体叫做前景(foreground)

 

import cv2
import numpy as np


cap = cv2.VideoCapture(r'D:\photo\data\car.mp4')

#创建mog对象
mog = cv2.bgsegm.createBackgroundSubtractorMOG()
kernel = cv2.getStructuringElement (cv2.MORPH_RECT,(5,5))

min_w = 50
min_h = 50

line_high = 310

#计算外接矩形的中心点
def center(x, y, w, h):
    x1 = int (w / 2)
    y1 = int (h / 2)
    cx = int (x) + x1
    cy = int (y) +y1
    return cx, cy
#偏移量
offset =9

cars = []
carno = 0

#循环读取视频帧
while True:
    ret, frame =cap.read()
    if ret == True:
        #把原始数据灰度化
        gray = cv2.cvtColor (frame,cv2.COLOR_BGR2GRAY)
        #去噪
        blur = cv2.GaussianBlur(gray,(3, 3),5)
        mask =mog.apply(frame)     
        #腐蚀
        erode = cv2.erode (mask,kernel)
        #膨胀
        dialte = cv2.dilate(mask,kernel,iterations=2)

        #消除内部的方块,闭运算
        close = cv2.morphologyEx(dialte,cv2.MORPH_CLOSE,kernel)
     

        #查找轮廓
        contours, h = cv2.findContours (close,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
    
        #画出检测先
        cv2.line(frame,(10,line_high),(950,line_high),(0,125,255),5)

        #画出所以检测处的轮廓
        for contour in contours:
            #最大外接矩形
            (x,y,w,h) = cv2.boundingRect(contour)
            # 通过外接矩形的宽高大小去掉小矩形
            is_vaild = (w >=min_w) and (h >= min_h)
            if not is_vaild:
                continue

            #要求坐标点都是整数
            cv2.rectangle(frame,(int(x),int(y),int(w),int(h)),(0,0,255),2)
            #把车抽象成一点,即外接矩形的中心点
            cpoint = center(x, y, w, h)
            cars.append(cpoint)
            cv2.circle (frame,(cpoint), 5,(0,0,255),-1) #-1表示实心的


            #判断车是否过检测线
            for (x, y) in cars:
                if y > (line_high - offset) and y < (line_high + offset):
                    
                    #落入有效区
                    #计数加1
                    carno += 1
                    cars.remove((x,y))
            #如何画线
            #如何计数
        cv2.putText (frame,'vehicle Count:' +str(carno), (50,50), cv2.FONT_HERSHEY_SIMPLEX , 2,(0,0,255), 5)    
        cv2.imshow('frame',frame)

        key = cv2.waitKey(50)
        #用户按ESC退出
        if key == 27:
            break
   
#最后来释放资源
cap.release()
cv2.destroyAllWindows()

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
车辆定位管理平台是基于Java开发的一个用于车辆位置追踪和管理的系统。该系统通过使用全球定位系统(GPS)和地理信息系统(GIS)技术,提供车辆定位、车辆实时监控、车辆轨迹回放、报警提示等功能。 该平台的架构由多个模块组成,包括前端界面、业务逻辑处理、数据处理和存储,以及与GPS设备进行通信的接口。用户可以通过前端界面实时查看车辆的位置信息、状态信息和相关的报警信息。界面支持地图显示,可以以地图的形式将车辆的位置标注在地图上,方便用户直观地了解车辆的位置和行驶轨迹。 系统的业务逻辑处理模块负责接收GPS设备发送的位置信息,并对这些信息进行处理和解析。通过对传感器数据的分析,系统可以判断车辆的行驶状态、速度、油耗等信息,并在需要时发出报警提示。同时,系统支持对车辆位置的历史记录进行回放,以便用户了解车辆的历史轨迹和行驶情况。 数据处理和存储模块负责将处理后的数据存储到数据库中,并提供数据查询和统计功能。数据的存储和管理使得用户可以通过系统对车辆的历史轨迹和行驶情况进行分析和统计,对车辆的使用和管理进行优化。 车辆定位管理平台的优势在于提供了实时的车辆定位和监控功能,能够帮助用户及时了解车辆的位置和状态,同时提供了历史轨迹回放和数据分析功能,方便用户进行综合的车辆管理和优化。该平台适用于各种车辆的监控和管理需求,如物流公司、公共交通公司、出租车公司等。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值