opencv检测动态物体的实现


Posted in Python onJuly 21, 2021

之前我在超市看到当有物体经过时,监控的屏幕边缘会出现绿框。感觉蛮有意思的。来用opencv试试能不能实现类似的效果。

  我采用的检测动态物体的方法是,比较前后两帧图像,即当前画面与上一帧的画面出现了不同。我们把两帧画面进行比较。然后框选出运动的物体。我们还希望程序可以判断当前窗口到底有没有物体在运动。那么我们就需要添加一个状态。为了方便我们找到什么时间有物体移动,我打印出时间。

  当我们的程序检测到移动的物体时,会捕捉到它的轮廓,添加一个外接整矩形框,返回x,y的坐标。当不返回坐标时,则意味着没有物体运动,我们通过坐标值来是否有物体移动。并打印出当时的本地时间。

  源代码:

import cv2
import time
import numpy as np

def videos():
    cap = cv2.VideoCapture(1)
    #不设置是默认640*480,我们这里设置出来
    cap.set(3, 640)
    cap.set(4, 480)

    img_num = 0
    k = 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 += 1

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

videos()

  静:

opencv检测动态物体的实现

  动:

  当有物体经过窗口时,控制台打印出了时间。这样便于我们在录制好的视频内查找。

opencv检测动态物体的实现

opencv检测动态物体的实现

 为了方便,我在窗口左上角加入了时间和日期。

**注意!**必须把
localtime = time.asctime(time.localtime(time.time()))
放入主循环内,否则只返回调用的一瞬间的本地时间,不会程序持续。
也不可以使用time.sleep()来控制时间变化,这会影响我们视频的帧率

  这个方法的弊端是当环境光线亮度变化过大时,返回的轮廓会产生变化,导致程序判断整个屏幕都在运动,这点仍需改进。

到此这篇关于opencv检测动态物体的实现的文章就介绍到这了,更多相关opencv检测动态物体内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现堆栈与队列的方法
Jan 15 Python
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
Python实现队列的方法
May 26 Python
python版本的读写锁操作方法
Apr 25 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
Aug 06 Python
Python3 pandas 操作列表实例详解
Sep 23 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
django使用xadmin的全局配置详解
Nov 15 Python
pip install 使用国内镜像的方法示例
Apr 03 Python
python 字符串格式化的示例
Sep 21 Python
python 如何做一个识别率百分百的OCR
May 29 Python
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Jun 03 Python
Python爬虫中urllib3与urllib的区别是什么
python Django框架快速入门教程(后台管理)
Python编写nmap扫描工具
Jul 21 #Python
Django模型层实现多表关系创建和多表操作
Jul 21 #Python
Python基本数据类型之字符串str
Jul 21 #Python
Python中22个万用公式的小结
Jul 21 #Python
python字典的元素访问实例详解
Jul 21 #Python
You might like
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
Javascript拓展String方法小结
2013/07/08 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
2016/02/05 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
12个非常有用的JavaScript技巧
2017/05/17 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
vue获取data数据改变前后的值方法
2019/11/07 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
[05:28]刀塔密之一:团结则存
2014/07/03 DOTA
Python进阶学习之特殊方法实例详析
2017/12/01 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
生日派对邀请函
2014/01/13 职场文书
经理管理专业毕业自荐书范文
2014/02/12 职场文书
作文批改评语大全
2014/04/23 职场文书
社区国庆节活动总结
2015/03/23 职场文书
机械原理课程设计心得体会
2016/01/15 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
Go遍历struct,map,slice的实现
2021/06/13 Golang