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 返回汉字的汉语拼音
Feb 27 Python
Python数据类型详解(四)字典:dict
May 12 Python
python字符串过滤性能比较5种方法
Jun 22 Python
Python使用openpyxl读写excel文件的方法
Jun 30 Python
使用Flask集成bootstrap的方法
Jul 24 Python
详解Python用户登录接口的方法
Apr 17 Python
python实现KNN分类算法
Oct 16 Python
tensorflow estimator 使用hook实现finetune方式
Jan 21 Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 Python
服务器端jupyter notebook映射到本地浏览器的操作
Apr 14 Python
python中sort sorted reverse reversed函数的区别说明
May 11 Python
Pycharm 跳转回之前所在页面的操作
Feb 05 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
十天学会php之第五天
2006/10/09 PHP
apache php模块整合操作指南
2012/11/16 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
两款万能的php分页类
2015/11/12 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
PHP封装的多文件上传类实例与用法详解
2017/02/07 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
javascript document.images实例
2008/05/27 Javascript
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
jQuery 获取兄弟元素的几种不错方法
2014/05/23 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
[01:51]DAC趣味视频-如何成为职业选手.mp4
2017/04/02 DOTA
python转换摩斯密码示例
2014/02/16 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
pycharm修改文件的默认打开方式的步骤
2019/07/29 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
基于Python实现2种反转链表方法代码实例
2020/07/06 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
美国探亲签证邀请信
2014/02/05 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
服务承诺书怎么写
2014/05/24 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
Java使用Unsafe类的示例详解
2021/09/25 Java/Android