opencv运动物体识别

import cv2
import time
import datetime
import os def mkdir(path):
folder = os.path.exists(path) if not folder: # 判断是否存在文件夹如果不存在则创建为文件夹
os.makedirs(path) # makedirs 创建文件时如果路径不存在会创建这个路径
("--- new folder... ---")
("--- OK ---") else:
("--- There is this folder! ---") file = "D:\\CCTVlook" # 保存位置
mkdir(file)
print("文件储存于D:\\CCTVlook")
# 选取摄像头,0为笔记本内置的摄像头,1,2···为外接的摄像头
camera = cv2.VideoCapture(0) time.sleep(5) # 延迟5s执行
background = None # 初始化背景 def nothing(x):
pass cv2.namedWindow("fps") # 新建一个窗口
cv2.createTrackbar("level", "fps", 21, 255, nothing) # 新建阈值滑动条
shot_idx = 0 while True:
text = "No Target"
flat = 0
# 滑动条赋值
kerne = cv2.getTrackbarPos("level", "fps")
if kerne % 2 == 0:
kerne = kerne + 1 # 解决滑动条赋值到高斯滤波器是偶数异常抛出
(grabbed, frame) = camera.read()
# 对帧进行预处理,先转灰度图,再进行高斯滤波。
# 用高斯滤波对图像处理,避免亮度、震动等参数微小变化影响效果
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (kerne, kerne), 0)
# 将第一帧设置为整个输入的背景
if background is None:
background = gray
continue
# 当前帧和第一帧的不同它可以把两幅图的差的绝对值输出到另一幅图上面来
frameDelta = cv2.absdiff(background, gray)
# 二值化
thresh = cv2.threshold(frameDelta, 25, 255, cv2.THRESH_BINARY)[1]
# 腐蚀膨胀
thresh = cv2.dilate(thresh, None, iterations=2)
# 取轮廓
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[
-2
]
# 遍历轮廓
for c in cnts:
if cv2.contourArea(c) < 1800: # 对于较小矩形区域,选择忽略
continue
flat = 1 # 设置一个标签,当有运动的时候为1
# 计算轮廓的边界框,在当前帧中画出该框
(x, y, w, h) = cv2.boundingRect(c)
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
text = "Find Target! save as D:\CCTVlook"
print("Find Target!")
cv2.putText(frame, text, (10, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
cv2.putText(
frame,
datetime.datetime.now().strftime("%A %d %B %Y %I:%M:%S%p"),
(10, frame.shape[0] - 10),
cv2.FONT_HERSHEY_SIMPLEX,
0.35,
(0, 0, 255),
1,
)
# cv2.imshow("Frame Delta", frameDelta) cv2.imshow("fps", frame)
# cv2.imshow("Thresh", thresh) key = cv2.waitKey(1) & 0xFF # 如果q键被按下,跳出循环
ch = cv2.waitKey(1)
if key == ord("q"):
break if flat == 1: # 设置一个标签,当有运动的时候为1
fn = "D:\CCTVlook\shot%d.jpg" % (shot_idx)
cv2.imwrite(fn, frame)
shot_idx += 1
continue
原文:https://blog.csdn.net/dgut_guangdian/article/details/79762409
opencv运动物体识别的更多相关文章
- opencv学习之路(37)、运动物体检测(二)
一.运动物体轮廓椭圆拟合及中心 #include "opencv2/opencv.hpp" #include<iostream> using namespace std ...
- 【图像处理】openCV光流法追踪运动物体
openCV光流法追踪运动物体 email:chentravelling@163.com 一.光流简单介绍 摘自:zouxy09 光流的概念是Gibson在1950年首先提出来的.它是空间运动物体在观 ...
- OpenCV.物体识别
1.度娘:“OpenCV 物体识别” 1.1.opencv实时识别指定物体 - 诺花雨的博客 - CSDN博客.html(https://blog.csdn.net/qq_27063119/artic ...
- OpenCV开发笔记(七十三):红胖子8分钟带你使用opencv+dnn+yolov3识别物体
前言 级联分类器的效果并不是很好,准确度相对深度学习较低,上一章节使用了dnn中的tensorflow,本章使用yolov3模型,识别出具体的分类. Demo 320x320,置信度0 ...
- 手把手教你使用LabVIEW OpenCV dnn实现物体识别(Object Detection)含源码
前言 今天和大家一起分享如何使用LabVIEW调用pb模型实现物体识别,本博客中使用的智能工具包可到主页置顶博客LabVIEW AI视觉工具包(非NI Vision)下载与安装教程中下载 一.物体识别 ...
- 基于opencv3.0下的运动车辆识别
在opencv的初等应用上,对运动物体的识别主要有帧差或背景差两种方式. 帧差法主要的原理是当前帧与前一帧作差取绝对值: 背景差主要的原理是当前帧与背景帧作差取绝对值: 在识别运动车辆上主要需要以下9 ...
- 使用OpenCV进行人脸识别
不断维护的地址:http://plzcoding.com/face-recognition-with-opencv/ 怎样使用OpenCV进行人脸识别 本文大部分来自OpenCV官网上的Face Re ...
- MATLAB 物体识别算法说明:vision.ForegroundDetector, vision.BlobAnalysis
在官方示例中,Motion-Based Multiple Object Tracking和Using Kalman Filter for Object Tracking都使用了下面两个算法进行物体的识 ...
- 谷歌开源的TensorFlow Object Detection API视频物体识别系统实现教程
视频中的物体识别 摘要 物体识别(Object Recognition)在计算机视觉领域里指的是在一张图像或一组视频序列中找到给定的物体.本文主要是利用谷歌开源TensorFlow Object De ...
随机推荐
- jmeter实现文件下载
通过浏览器下载文件时,会提示选择保存路径,但是利用测试工具jmeter请求时,在页面看到请求次数是增加了,而本地没有具体下载下来的文件. 需要在具体的文件下载请求下面,添加后置处理器-bean she ...
- react 开发 vscode需要安装的开发插件
1.npm Intellisense 有自动补全的功能 var lodash = require('lodash') 2. path Intellisense 自动补全文件名 import C ...
- 吴裕雄--天生自然HADOOP学习笔记:hadoop集群实现PageRank算法实验报告
实验课程名称:大数据处理技术 实验项目名称:hadoop集群实现PageRank算法 实验类型:综合性 实验日期:2018年 6 月4日-6月14日 学生姓名 吴裕雄 学号 15210120331 班 ...
- Oracle数据库自带了decode()函数
Oracle数据库自带了decode()函数,函数的使用方法如下: SELECT emp.ename, emp.job, emp.sal, decode(job, 'manager ...
- SystemVerilog基本语法总结(上)
SystemVerilog基本语法总结(上) 在总结SV的语法之前,先分享一些关于SV的笔试题目,这样更显得具有针对性的总结. a. 验证中,代码覆盖率是指(衡量哪些设计代码在激活触发,而哪一些则一直 ...
- springmvc教程(1)
idea搭建springmvc maven项目 jdk:1.8 maven:Bundled (Maven 3) idea版本: 开始搭建第一个springmvc maven项目 1.点击File-&g ...
- 前端学习笔记系列一:5 在项目中引入阿里图标icon
进入到阿里的图标库网站,里面有上百万种icon,https://www.iconfont.cn,需要注册一个帐号,然后进入到这个页面,在这里点击右下角的带加号的图标,创建一个新的项目,名称与你要使用图 ...
- Verilog有符号整型数(signed int)比大小
本文参考了https://blog.csdn.net/wenxinwukui234/article/details/42119265/ 关于2进制补码的思考和讨论. ================= ...
- linux问题故障
分析问题的方法论 What-现象是什么样的 When-什么时候发生 Why-为什么会发生 Where-哪个地方发生的问 How much-耗费了多少资源 How to do-怎么解决问题 4. cpu ...
- NO16 第二关课后考试-aw-F-过滤已知的一级目录
·总结的经验:1.学会总结时学好运维的重要前提.2.通过案列或例子来总结一个技术点或者命令.3.画一张逻辑图,形象的卡通记忆这个知识技术点.4.通过管道过滤数据时,最好先输出结果,然后回退再使用管道看 ...