OPEN CV 实现车辆统计

#加载视频
import cv2
import numpy as np
cap = cv2.VideoCapture('car.mp4')
#去除背景
mog= cv2.bgsegm.createBackgroundSubtractorMOG()
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(7,7))
min_w=90
min_h=90
line_hig=400
#偏移量
offset=2
cars=[]
carno=0
#计算外矩形的中心点
def center(x,y,w,h):x1=int(w/2)y1=int(h/2)cx=int(x)+x1cy=int(y)+y1return cx,cy
#循环读取视频帧
while True:ret,frame = cap.read()if ret == True:# 把原始帧进行灰度化gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)#采用高斯去噪blur = cv2.GaussianBlur(gray,(7,7),8)fgmask = mog.apply(blur)#腐蚀erode = cv2.erode(fgmask,kernel)#膨胀,把图像还原回来dialte=cv2.dilate(erode,kernel,iterations=2)#消除内部的小块# 执行开运算opening = cv2.morphologyEx(dialte, cv2.MORPH_OPEN, kernel)#闭运算close=cv2.morphologyEx(opening,cv2.MORPH_CLOSE,kernel)#查找轮廓result,contours,h=cv2.findContours(close,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)# 如何画线,画在什么位置cv2.line(frame,(10,line_hig),(1600,line_hig),(255,255,0),3)#画出所有检测的轮廓for contour in contours:#最大外接矩形(x,y,w,h)=cv2.boundingRect(contour)#通过外接矩形的宽高大小来过滤掉小的矩形is_valid = (w>=min_w)&(h>=min_h)if not is_valid:continue#要求坐标点数都是整数cv2.rectangle(frame,(int(x),int(y)),(int(x+w),int(y+h)),(0,0,255),2)#把车抽象为一点,即外接矩形的中心点#要通过外接矩形计算矩形的中心点cpoint=center(x,y,w,h)cars.append(cpoint)cv2.circle(frame,(cpoint),5,(0,0,255),-1)#判断汽车是否过线# 如何画线,画在什么位置#如何去计数for(x,y) in cars:if y>(line_hig-offset) and y<(line_hig+offset):#落入有郊期间carno+=1cars.remove((x,y))print(carno)#cv2.imshow('video',erode)#cv2.imshow('opening', opening)cv2.putText(frame,'Vehicle Count:'+str(carno),(500,60),cv2.FONT_HERSHEY_SIMPLEX,2,(0,0,255),5)cv2.imshow('frame', frame)key= cv2.waitKey(2)#用户按ESC退出if key ==27:break
#释放资源
cap.release()
cv2.destroyAllWindows()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5. Django 探究CBV视图

5. 探究CBV视图 Web开发是一项无聊而且单调的工作, 特别是在视图功能编写方面更为显著. 为了减少这种痛苦, Django植入了视图类这一功能, 该功能封装了视图开发常用的代码, 无须编写大量代码即可快速完成数据视图的开发, 这种以类的形式实现响应与请求处理称为CBV(Class Base…

使用阿里云试用Elasticsearch学习:sentence-transformers 包使用

环境&#xff1a;centos8&#xff0c;windows坑太多。 一、检查linux环境openssl哪个版本&#xff08;如果是OpenSSL 1.1.1k 直接跳过&#xff09; [roothecs-334217 python39]# openssl version OpenSSL 1.0.2k-fips 26 Jan 2017原因后续会出麻烦&#xff0c;遇到这种情况最…

16.C++常用的算法_算数生成算法

文章目录 遍历算法1. accumulate()代码工程运行结果 2. fill()代码工程运行结果 遍历算法 1. accumulate() 代码工程 第三个参数为累加的起始值&#xff0c;如果没有特殊需求写0即可; 需要注意包含头文件#include<numeric>#define _CRT_SECURE_NO_WARNINGS #include&l…

为什么说创建一个index.html 文件 来作为javascript 一个 host

JavaScript代码运行环境的系统或平台&#xff0c;JavaScript代码需要一个“宿主环境”&#xff08;host environment&#xff09;来执行&#xff0c;这个环境提供了必需的资源、API和执行机制。 index.html 作为javaScript宿主环境的原因 说到使用一个 index.html 文件作为Ja…

【C语言】Dijkstra算法详解

一、引言二、Dijkstra算法原理三、Dijkstra算法的C语言实现四、Dijkstra算法的应用场景五、总结 一、引言 Dijkstra算法是一种著名的图论算法&#xff0c;用于解决单源最短路径问题。它是由荷兰计算机科学家Edsger W. Dijkstra在1956年提出的。本文将详细介绍Dijkstra算法的原理…

锂电池充放电管理-单片机通用模版

锂电池充放电管理-单片机通用模版 一、锂电池充放电检测的原理二、power.c的实现三、power.h的实现四、锂电池检测和充电电路一、锂电池充放电检测的原理 ①两节锂电池通过电阻分压检测ADC,再根据电压划分电量等级;②充电使用的是锂电池充电IC方案,可通过硬件电阻参数调节充…

代码随想录:二叉树11-12

目录 222.完全二叉树的节点个数 题目 代码&#xff08;层序迭代&#xff09; 代码&#xff08;后序递归&#xff09; 代码&#xff08;满二次树递归&#xff09; 总结 110.平衡二叉树 题目 代码&#xff08;后序递归&#xff09; 代码&#xff08;层序迭代&#xff0…

短视频批量采集提取软件|视频关键词下载工具

短视频批量采集软件&#xff1a;快速抓取、高效下载 一、开发背景 随着短视频平台的兴起&#xff0c;获取并分析相关视频内容已成为许多业务的必要步骤。然而&#xff0c;传统的手动方式无法满足快速、批量获取的需求&#xff0c;因此我们开发了一款专业的短视频批量采集软件。…

Linux内核之读、写信号量:up_read、up_write用法实例(五十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

ASP.NET基于WEB的工作计划流程管理系统的设计与实现

摘 要 信息技术的飞速发展&#xff0c;尤其是网络通讯技术、数据库技术及自动化技术的日新月异&#xff0c;为单位、企业的办公带来了极大的便利。但是由于单位、企业的工作性质众多&#xff0c;工作流程各有差异&#xff0c;企业、单位、部门之间的管理机制各不相同&#xf…

【MySQL】MySQL锁(三)元数据锁与间隙锁

MySQL锁&#xff08;三&#xff09;元数据锁与间隙锁 在上篇文章中&#xff0c;我们就提到过 元数据锁 和 间隙锁 这两个名词&#xff0c;不知道有没有吊起大家的胃口。这俩货又是干嘛的呢&#xff1f;别急&#xff0c;我们一个一个来看。 元数据锁 元数据锁&#xff0c;又叫 M…

matlab简单统计学预测方法分析

基础的统计学预测方法分析&#xff0c;内容参考国防工业出版社-司守奎&#xff0c;孙玺菁主编-《数学建模算法与应用&#xff08;第三版&#xff09;》。本文结合实际应用对文章内容进行了提取&#xff0c;结合matlab算法进行程序编写。 本文所涉及的所有代码内容可通过百度网…

用队列实现栈(力扣第225题)

#include "stdio.h" #include "stdbool.h" #include "string.h" #include "stdlib.h" #include "assert.h"//初始化队列 typedef int QueueDataType;typedef struct queue {QueueDataType val;struct queue* next; }Qnode;t…

每天学习一个Linux命令之rsyslog

每天学习一个Linux命令之rsyslog 介绍 rsyslog是一个强大的日志处理系统&#xff0c;常用于Linux系统中的日志管理。它可以收集、过滤和路由日志消息&#xff0c;并将其发送到不同的目标&#xff0c;如文件、远程服务器或数据库。本篇博客将详细介绍rsyslog命令的使用方法及其…

微信小程序地图polyline坐标太多异常显示BUG

描述 微信小程序map地图上显示polyline线&#xff0c;点位超过1250个出现bug&#xff0c;&#xff08;仅真机上出现&#xff0c;模拟器上正常&#xff09; 这里以加载四川省边界为例, 以下是示例代码 // 读取geojson数据 uni.request({url: https://geo.datav.aliyun.com/a…

openplc Linux 使用modbus RTU 从机通讯

1.Linux 环境下&#xff0c;openplc 默认使用的是modbus tcp协议通信。 想要使用串口 modbus rtu 通讯可以通过在runtime中添加SlaveDevices从机设备 2.添加设备&#xff0c;分配地址。 左边添加串口配置&#xff0c;右边是需要通讯的地址&#xff0c;从机地址都是从100开始&am…

yolov8 区域计数

yolov8 区域计数 1. 基础2. 计数功能2.1 计数模块2.2 判断模块 3. 主代码4. 实验结果5. 源码 1. 基础 本项目是在 WindowsYOLOV8环境配置 的基础上实现的&#xff0c;测距原理可见上边文章 2. 计数功能 2.1 计数模块 在指定区域内计数模块 def count_objects_in_region(bo…

STM32 堆栈内存以及变量存储分布

STM32的程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内, 地址范围为0x0000 0000至0xFFFF FFFF。其中FLASH为ROM类型&#xff0c;储存的数据掉电不易失&#xff1b;RAM中存储的数据掉电易失。以STM32F103系列为例&#xff0c;最多有512KB的FLA…

Discuz! X3.4 升级至 Discuz! X3.5 详细教程

第一步&#xff1a;从其他以前的 Discuz! X 版本升级Discuz! X3.4 请先升级到Discuz! X3.4&#xff0c;升级教程网上比较普遍&#xff0c;在此不再论述。 第二步&#xff1a;Discuz! X3.4 升级至 Discuz! X3.5 &#xff08;Discuz 从 X3.5 以后&#xff0c;不在发布GBK版本&…

【软考】UML中的图之类图

目录 1. 说明2. 图示3. 类图使用方式3.1 对系统的词汇建模3.2 对简单的协作建模3.3 对逻辑数据库模式建模 1. 说明 1.类图&#xff08;Class Diagram&#xff09;展现了一组对象、接口、协作和它们之间的关系。2.在面向对象系统的建模中所建立的最常见的图是类图。3.类图给出系…