哈喽,大家好呀,这里是滑稽研究所。之前我在超市看到当有物体经过时,监控的屏幕边缘会出现绿框。感觉蛮有意思的。来用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检测动态物体相关推荐

  1. OpenCV检测平面物体

    OpenCV检测平面物体 检测平面物体 检测平面物体 本教程的目的是学习如何使用features2d和calib3d模块来检测场景中已知的平面对象. 测试数据:使用数据文件夹中的图像,例如box.pn ...

  2. DynaSLAM源码笔记-检测动态物体部分梳理

    按照main函数向下细分的顺序大概记录一下rgbd情况下,动态物体去除(inpaint的部分本篇不涉及)的源码的写法,并对应一下论文, 关于ORB-SLAM2本身的部分不会太涉及到. 安装方法见:关于 ...

  3. 树莓派摄像头检测运动物体

    文章目录 一.安装OpenCv 1.在树莓派安装运行在Python2上的OpenCV 2.在树莓派安装运行在Python3上的OpenCV 二.运动目标检测 源代码 一.安装OpenCv 检测运动物体 ...

  4. 惊!Python能够检测动态的物体颜色!

    作者 | 李秋键 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本篇文章将通过图片对比的方法检查视频中的动态物体,并将其中会动的物体定位用cv2矩形框圈出来.本次项目可用于树莓派或者单 ...

  5. 基于opencV的动态背景下运动目标检测及跟踪(修改版)

    基于openCV的动态背景下的运动目标检测 from: http://www.mianfeiwendang.com/doc/89c6692a222a84b2ced0d502/1 摘要:介绍在动态背景下 ...

  6. IoT: Win10+Tensorflow+OpenCV+IPCamera 实时视频物体检测

    IoT: Win10+Tensorflow+OpenCV+IPCamera 实时视频物体检测 环境配置 Python3.5 既然是windows下用python,那就不要作死自己弄环境了,直接用ana ...

  7. OpenCV学习之利用背景建模检测运动物体

    利用背景建模检测运动物体 #include "cv.h" #include "highgui.h" #include <stdio.h> int m ...

  8. 【开源分享】VIDO-SLAM:一种视觉惯性动态物体SLAM系统

    文章:Inertial-Only Optimization for Visual-Inertial Initialization 作者:Carlos Campos, Jose M.M. Montiel ...

  9. 使用Python,OpenCV检测摄像机到标记对象的距离

    使用Python,OpenCV检测摄像机到标记对象的距离 1. 效果图 2. 三角形相似性是什么? 3. 三角形相似性检测距离原理 4. 使用Python,OpenCV检测标记对象 5. 源码 参考 ...

  10. opencv 检测几何图形_使用OpenCV + ConvNets检测几何形状

    opencv 检测几何图形 A simple yet powerful pipeline for detecting shapes in scanned documents 一个简单而强大的管道,用于 ...

最新文章

  1. 4.1.9 文件系统的层次结构
  2. 进程隐藏与进程保护(SSDT Hook 实现)(一)
  3. 相同的树Python解法
  4. delphi 汉字的编码 转换
  5. 华为称不会退出海外市场;英伟达证实遭遇黑客攻击;TypeScript 4.6发布 | 极客头条...
  6. 攻防世界 用什么工具_橱柜清洁、控油方法 厨房清洁工具用什么好
  7. 开源免费录屏和直播软件OBS Studio教程
  8. 平均误差、相对误差百分数、均方根误差
  9. (C语言代码分享):车辆信息管理系统源代码来了。
  10. AI实战:目标检测模型应用之生活垃圾图片分类
  11. 由先序中序得后序,中序后序得先序代码实现
  12. PHP输出中文乱码的解决方法(适合初学者)
  13. Scala中过滤操作filter与filterNot函数
  14. 计算机中c盘和硬盘有什么关系,都是硬盘分区 C盘和D盘到底有什么区别?
  15. MySQL--count函数如果得到null的处理方法
  16. 首届“十大最具价值”AR/VR创业项目遴选榜单丨Xtecher权威发布
  17. proto文件定义及参数说明
  18. 简易版走迷宫(c语言)
  19. windows server 2016 活动目录部署系列(四)资源的权限分配
  20. 全面了解大数据“三驾马车”的开源实现

热门文章

  1. MD5加密算法特点及简单实现(Java)
  2. libcef-Vs2017-下载编译第一个libcef3项目
  3. 未来教育python有错吗_未来教育题库错误大列举,建议不要用它的题库复习了
  4. 支付宝小程序使用阿里图标
  5. 如何用命令行去修改视频文件格式
  6. 西湖大学博导:都说不唯论文,那我们发表论文是为了什么?
  7. SLA技术3D打印机的原理
  8. [Ubuntu] 二、安卓模拟器
  9. 计算机桌面不显示时间,怎么把时间显示在桌面
  10. 证件照素材大合集(全网最全版本,免费分享)