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爬虫数据处理(详解)
Jun 10 Python
Python算法输出1-9数组形成的结果为100的所有运算式
Nov 03 Python
Python实现采用进度条实时显示处理进度的方法
Dec 19 Python
scrapy爬虫实例分享
Dec 28 Python
Python安装pycurl失败的解决方法
Oct 15 Python
Django中的forms组件实例详解
Nov 08 Python
python 设置输出图像的像素大小方法
Jul 04 Python
Pytorch实现各种2d卷积示例
Dec 30 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
Apr 25 Python
使用Python构造hive insert语句说明
Jun 06 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
解决hive中导入text文件遇到的坑
Apr 07 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
Protoss魔法科技
2020/03/14 星际争霸
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
Document 对象的常用方法
2009/07/31 Javascript
理解Javascript_10_对象模型
2010/10/16 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
Python实现的批量下载RFC文档
2015/03/10 Python
python编程使用协程并发的优缺点
2018/09/20 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
解决python运行启动报错问题
2020/06/01 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
励志演讲稿大全
2014/08/21 职场文书
营销学习心得体会
2014/09/12 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python