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中的True,False条件判断实例分析
Jan 12 Python
Python multiprocessing模块中的Pipe管道使用实例
Apr 11 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
Python实现队列的方法
May 26 Python
在Python的Django框架中包装视图函数
Jul 20 Python
Python实现按学生年龄排序的实际问题详解
Aug 29 Python
Python环境搭建之OpenCV的步骤方法
Oct 20 Python
利用Python如何批量更新服务器文件
Jul 29 Python
详解多线程Django程序耗尽数据库连接的问题
Oct 08 Python
详解pycharm配置python解释器的问题
Oct 15 Python
python如何利用cv2模块读取显示保存图片
Jun 04 Python
Pytorch可视化的几种实现方法
Jun 10 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读取javascript设置的cookies的代码
2010/04/12 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
2017/05/17 PHP
javascript下arguments,caller,callee,call,apply示例及理解
2009/12/24 Javascript
url地址自动加#号问题说明
2010/08/21 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
jQuery弹出层插件popShow用法示例
2017/01/23 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
VUE2.0中Jsonp的使用方法
2018/05/22 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
react基本安装与测试示例
2020/04/27 Javascript
vue setInterval 定时器失效的解决方式
2020/07/30 Javascript
[33:15]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VP VS Mineski
2018/03/31 DOTA
Windows下搭建python开发环境详细步骤
2020/07/20 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
python中import学习备忘笔记
2017/01/24 Python
Python supervisor强大的进程管理工具的使用
2019/04/24 Python
django框架F&Q 聚合与分组操作示例
2019/12/12 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
在校学生职业规划范文
2014/01/08 职场文书
开业主持词
2014/03/21 职场文书
科长个人四风问题整改措施思想汇报
2014/10/13 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
丧事酒宴答谢词
2015/09/30 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
python flask开发的简单基金查询工具
2021/06/02 Python
利用Redis实现点赞功能的示例代码
2022/06/28 Redis
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技