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的框架中为MySQL实现restful接口的教程
Apr 08 Python
python使用正则表达式匹配字符串开头并打印示例
Jan 11 Python
Python爬虫爬取一个网页上的图片地址实例代码
Jan 16 Python
python 实现数组list 添加、修改、删除的方法
Apr 04 Python
python使用正则筛选信用卡
Jan 27 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
python SVD压缩图像的实现代码
Nov 05 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
python通过cython加密代码
Dec 11 Python
python中pandas.read_csv()函数的深入讲解
Mar 29 Python
Python趣味挑战之给幼儿园弟弟生成1000道算术题
May 28 Python
Python开发工具Pycharm的安装以及使用步骤总结
Jun 24 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分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
vue2.0在table中实现全选和反选的示例代码
2017/11/04 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
python Django模板的使用方法(图文)
2013/11/04 Python
python检测服务器是否正常
2014/02/16 Python
在Django框架中运行Python应用全攻略
2015/07/17 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
Python 字典与字符串的互转实例
2017/01/13 Python
python操作mysql代码总结
2018/06/01 Python
python进阶之多线程对同一个全局变量的处理方法
2018/11/09 Python
pandas 将索引值相加的方法
2018/11/15 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
农药学硕士毕业生自荐信
2013/09/25 职场文书
专科毕业生就业推荐信
2013/11/01 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
《富饶的西沙群岛》教学反思
2014/04/09 职场文书
创建青年文明号材料
2014/05/09 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
详细介绍python操作RabbitMq
2022/04/12 Python
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL