opencv检测动态物体
哈喽,大家好呀,这里是滑稽研究所。之前我在超市看到当有物体经过时,监控的屏幕边缘会出现绿框。感觉蛮有意思的。来用opencv试试能不能实现类似的效果。
我采用的检测动态物体的方法是,比较前后两帧图像,即当前画面与上一帧的画面出现了不同。我们把两帧画面进行比较。然后框选出运动的物体。我们还希望程序可以判断当前窗口到底有没有物体在运动。那么我们就需要添加一个状态。为了方便我们找到什么时间有物体移动,我打印出时间。
当我们的程序检测到移动的物体时,会捕捉到它的轮廓,添加一个外接整矩形框,返回x,y的坐标。当不返回坐标时,则意味着没有物体运动,我们通过坐标值来是否有物体移动。并打印出当时的本地时间。
源代码:
import cv2
import time
import numpy as npdef videos():cap = cv2.VideoCapture(1)#不设置是默认640*480,我们这里设置出来cap.set(3, 640)cap.set(4, 480)img_num = 0k = np.ones((3, 3), np.uint8)while True:success, img = cap.read()localtime = time.asctime(time.localtime(time.time()))if not img_num:# 这里是由于第一帧图片没有前一帧previous = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)gray_diff = cv2.absdiff(gray, previous) # 计算绝对值差# previous 是上一帧图片的灰度图thresh = cv2.threshold(gray_diff, 40, 255, cv2.THRESH_BINARY)[1]mask = cv2.medianBlur(thresh, 3)close = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, k)cnts = cv2.findContours(close,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)[0]for c in cnts:area = cv2.contourArea(c)if area > 50:x, y, w, h = cv2.boundingRect(c)cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)if x>0:print("动",localtime)cv2.putText(img, localtime, (30, 30), cv2.FONT_HERSHEY_COMPLEX, 0.7, (0, 0, 255), 2)cv2.imshow("x", close)cv2.imshow("Result", img)img_num += 1if cv2.waitKey(1) & 0xFF == ord('q'):breakvideos()
静:
动:
当有物体经过窗口时,控制台打印出了时间。这样便于我们在录制好的视频内查找。
为了方便,我在窗口左上角加入了时间和日期。
**注意!**必须把
localtime = time.asctime(time.localtime(time.time()))
放入主循环内,否则只返回调用的一瞬间的本地时间,不会程序持续。
也不可以使用time.sleep()来控制时间变化,这会影响我们视频的帧率
这个方法的弊端是当环境光线亮度变化过大时,返回的轮廓会产生变化,导致程序判断整个屏幕都在运动,这点仍需改进。有好的想法,大家请在评论区提出,或者私信告诉我,感谢大家。
转载自:滑稽研究所
相关文章,请关注我们吧!
opencv检测动态物体相关推荐
- OpenCV检测平面物体
OpenCV检测平面物体 检测平面物体 检测平面物体 本教程的目的是学习如何使用features2d和calib3d模块来检测场景中已知的平面对象. 测试数据:使用数据文件夹中的图像,例如box.pn ...
- DynaSLAM源码笔记-检测动态物体部分梳理
按照main函数向下细分的顺序大概记录一下rgbd情况下,动态物体去除(inpaint的部分本篇不涉及)的源码的写法,并对应一下论文, 关于ORB-SLAM2本身的部分不会太涉及到. 安装方法见:关于 ...
- 树莓派摄像头检测运动物体
文章目录 一.安装OpenCv 1.在树莓派安装运行在Python2上的OpenCV 2.在树莓派安装运行在Python3上的OpenCV 二.运动目标检测 源代码 一.安装OpenCv 检测运动物体 ...
- 惊!Python能够检测动态的物体颜色!
作者 | 李秋键 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本篇文章将通过图片对比的方法检查视频中的动态物体,并将其中会动的物体定位用cv2矩形框圈出来.本次项目可用于树莓派或者单 ...
- 基于opencV的动态背景下运动目标检测及跟踪(修改版)
基于openCV的动态背景下的运动目标检测 from: http://www.mianfeiwendang.com/doc/89c6692a222a84b2ced0d502/1 摘要:介绍在动态背景下 ...
- IoT: Win10+Tensorflow+OpenCV+IPCamera 实时视频物体检测
IoT: Win10+Tensorflow+OpenCV+IPCamera 实时视频物体检测 环境配置 Python3.5 既然是windows下用python,那就不要作死自己弄环境了,直接用ana ...
- OpenCV学习之利用背景建模检测运动物体
利用背景建模检测运动物体 #include "cv.h" #include "highgui.h" #include <stdio.h> int m ...
- 【开源分享】VIDO-SLAM:一种视觉惯性动态物体SLAM系统
文章:Inertial-Only Optimization for Visual-Inertial Initialization 作者:Carlos Campos, Jose M.M. Montiel ...
- 使用Python,OpenCV检测摄像机到标记对象的距离
使用Python,OpenCV检测摄像机到标记对象的距离 1. 效果图 2. 三角形相似性是什么? 3. 三角形相似性检测距离原理 4. 使用Python,OpenCV检测标记对象 5. 源码 参考 ...
- opencv 检测几何图形_使用OpenCV + ConvNets检测几何形状
opencv 检测几何图形 A simple yet powerful pipeline for detecting shapes in scanned documents 一个简单而强大的管道,用于 ...
最新文章
- 4.1.9 文件系统的层次结构
- 进程隐藏与进程保护(SSDT Hook 实现)(一)
- 相同的树Python解法
- delphi 汉字的编码 转换
- 华为称不会退出海外市场;英伟达证实遭遇黑客攻击;TypeScript 4.6发布 | 极客头条...
- 攻防世界 用什么工具_橱柜清洁、控油方法 厨房清洁工具用什么好
- 开源免费录屏和直播软件OBS Studio教程
- 平均误差、相对误差百分数、均方根误差
- (C语言代码分享):车辆信息管理系统源代码来了。
- AI实战:目标检测模型应用之生活垃圾图片分类
- 由先序中序得后序,中序后序得先序代码实现
- PHP输出中文乱码的解决方法(适合初学者)
- Scala中过滤操作filter与filterNot函数
- 计算机中c盘和硬盘有什么关系,都是硬盘分区 C盘和D盘到底有什么区别?
- MySQL--count函数如果得到null的处理方法
- 首届“十大最具价值”AR/VR创业项目遴选榜单丨Xtecher权威发布
- proto文件定义及参数说明
- 简易版走迷宫(c语言)
- windows server 2016 活动目录部署系列(四)资源的权限分配
- 全面了解大数据“三驾马车”的开源实现