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通过urllib2获取带有中文参数url内容的方法
Mar 13 Python
python根据出生年份简单计算生肖的方法
Mar 27 Python
Python实现LRU算法的2种方法
Jun 24 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
Python判断中文字符串是否相等的实例
Jul 06 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
Jul 04 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
Pycharm远程调试原理及具体配置详解
Aug 08 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
python 实现德洛内三角剖分的操作
Apr 22 Python
python编写五子棋游戏
May 25 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 ajax 分页类代码
2008/11/13 PHP
php的大小写敏感问题整理
2011/12/29 PHP
使用php清除bom示例
2014/03/03 PHP
php生成图片缩略图的方法
2015/04/07 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
JS实现太极旋转思路分析
2016/12/09 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
[57:55]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第二场 12.12
2020/12/16 DOTA
Python计算程序运行时间的方法
2014/12/13 Python
详解10个可以快速用Python进行数据分析的小技巧
2019/06/24 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
药学专业毕业生求职信
2013/10/20 职场文书
上学迟到的检讨书
2014/01/11 职场文书
普罗米修斯教学反思
2014/02/06 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
建筑投标担保书
2014/05/20 职场文书
电子商务专业求职信
2014/07/10 职场文书
2014年化验室工作总结
2014/11/21 职场文书
如何写好闭幕词
2019/04/02 职场文书