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实现的百度站长自动URL提交小工具
Jun 27 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
Python实现的多叉树寻找最短路径算法示例
Jul 30 Python
解决python 自动安装缺少模块的问题
Oct 22 Python
在Mac上删除自己安装的Python方法
Oct 29 Python
python实现动态数组的示例代码
Jul 15 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
在python shell中运行python文件的实现
Dec 21 Python
Python PyPDF2模块安装使用解析
Jan 19 Python
完美解决jupyter由于无法import新包的问题
May 26 Python
Python工程师必考的6个经典面试题
Jun 28 Python
Python 用户输入和while循环的操作
May 23 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数据库密码的找回的步骤
2011/01/12 PHP
PHP数据过滤的方法
2013/10/30 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
php使用正则验证中文
2016/04/06 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
2016/09/22 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
2015/10/25 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
python实现ipsec开权限实例
2014/11/11 Python
python使用range函数计算一组数和的方法
2015/05/07 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
python批量修改ssh密码的实现
2019/08/08 Python
python之array赋值技巧分享
2019/11/28 Python
python实现马丁策略的实例详解
2021/01/15 Python
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
小学教师师德反思
2014/02/03 职场文书
《莫泊桑拜师》教学反思
2014/04/23 职场文书
党员先锋岗事迹材料
2014/05/08 职场文书
数学系毕业生求职信
2014/05/29 职场文书
求职信范文怎么写
2015/03/19 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书