python和opencv构建运动检测器的实现


Posted in Python onMarch 03, 2021

照着一个示例跑,目标本是捕获进入摄像头的第一帧然后会一直追踪这一个物体,如果出现的话会框出来,但是不知道什么原因,第一个框出来之后移动到别的地方还是会框别的东西,然后摄像头打开几秒就自动停止了还报错

python和opencv构建运动检测器的实现

python和opencv构建运动检测器的实现

import pandas

firstframe = None
status = [None,None]
df = pandas.DataFrame(columns=["start","end"])
cap = cv2.VideoCapture(1)
while True:
  check,colorframe = cap.read()
  status = 0
  gray = cv2.cvtColor(colorframe,cv2.COLOR_BGR2GRAY)
  gray = cv2.GaussianBlur(gray,(21,21),0) #高斯模糊去除噪声
  if firstframe is None:
    firstframe = gray
    continue #捕获第一个灰度帧 得到第一帧后不进行后续处理
  delta_frame = cv2.absdiff(firstframe,gray)
  # ,我们需要找出第一帧和当前帧之间的区别。因此,我们使用absdiff函数并将得到的结果称为delta帧。对于我们的用例来说,仅仅找到一个差异是不够的,所以我们需要定义一个像素阈值,它可以被视为真实的对象。我们可以选择30像素作为标准阈值,并将标准阈值的颜色定义为白色(颜色代码:255). 二元阈值函数THRESH_BINARY返回一个元组值,其中只有第二项([0]是第一项,[1]是第二项)包含生成的阈值帧。二元阈值函数用于处理含有2个离散值的非连续函数:如0或1。如果摄影机前面没有对象,我们将当前帧的状态视为0;如果摄影机前面存在对象,则将当前帧的状态视为1。 

  thresh_frame = cv2.threshold(delta_frame,30,255,cv2.THRESH_BINARY)[1]
  thresh_frame = cv2.dilate(thresh_frame,None,iterations=3)
  # 在膨胀函数Dilate中,我们可以通过设置迭代次数来设置平滑度。迭代次数越多,平滑度越高,处理时间也就越长。因此,建议保持标准化设置为3。膨胀函数中的“None”参数表示我们的应用中不需要元素结构。 

#声明元组的语法 (cnts,_)
  (cnts,_) = cv2.findContours(thresh_frame.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
  for contours in cnts :
    if cv2.contourArea(contours) < 10000:
      continue
    if cv2.contourArea(contours) < 20000:
     status = 1
     (x,y,w,h) = cv2.boundingRect(contours)
     cv2.rectangle(colorframe,(x,y),(x+w,y+h),(0,0,255),3)
     cv2.imshow("cc",colorframe)
  key = cv2.waitKey(1)
  if key == ord('q'):
    break

显然这里有什么问题。
留待解决:高斯平滑参数的获取

到此这篇关于python和opencv构建运动检测器的实现的文章就介绍到这了,更多相关python opencv构建运动检测器内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python封装shell命令实例分析
May 05 Python
python获取list下标及其值的简单方法
Sep 12 Python
Django实现的自定义访问日志模块示例
Jun 23 Python
python下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
利用python库在局域网内传输文件的方法
Jun 04 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
使用EduBlock轻松学习Python编程
Oct 08 Python
Python爬虫 批量爬取下载抖音视频代码实例
Aug 16 Python
三个python爬虫项目实例代码
Dec 28 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 Python
opencv 分类白天与夜景视频的方法
Jun 05 Python
Python+Matplotlib+LaTeX玩转数学公式
Feb 24 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 #Python
详解python第三方库的安装、PyInstaller库、random库
Mar 03 #Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 #Python
对Pytorch 中的contiguous理解说明
Mar 03 #Python
Flask中jinja2的继承实现方法及实例
Mar 03 #Python
基于PyTorch中view的用法说明
Mar 03 #Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 #Python
You might like
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
jQuery中contents()方法用法实例
2015/01/08 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
2016/06/13 Javascript
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
Python数组遍历的简单实现方法小结
2016/04/27 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
世界上最大的艺术社区:SAA
2020/12/30 全球购物
英语翻译系毕业生求职信
2013/09/29 职场文书
大专生自我评价
2014/01/28 职场文书
《与象共舞》教学反思
2014/02/24 职场文书
电子商务专业求职信
2014/03/08 职场文书
暑假家长评语大全
2014/04/17 职场文书
设备管理实施方案
2014/05/31 职场文书
匿名检举信范文
2015/03/02 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫