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 用户登录验证的小例子
Mar 06 Python
python实现自动登录人人网并访问最近来访者实例
Sep 26 Python
Python 文件管理实例详解
Nov 10 Python
十个Python程序员易犯的错误
Dec 15 Python
wxpython中自定义事件的实现与使用方法分析
Jul 21 Python
python Flask实现restful api service
Dec 04 Python
python字符串string的内置方法实例详解
May 14 Python
Python决策树之基于信息增益的特征选择示例
Jun 25 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
python交互模式基础知识点学习
Jun 18 Python
详解MindSpore自定义模型损失函数
Jun 30 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
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
php中的常用魔术方法总结
2013/08/02 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
2015/10/08 PHP
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
javascript arguments使用示例
2014/12/16 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
AngularJS动态加载模块和依赖的方法分析
2016/11/08 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
2018/05/07 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
Flask框架配置与调试操作示例
2018/07/23 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
详细分析Python垃圾回收机制
2020/07/01 Python
Python生成器generator原理及用法解析
2020/07/20 Python
python help函数实例用法
2020/12/06 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
美国独家设计师眼镜在线光学商店:Glasses Gallery
2017/12/28 全球购物
歌唱比赛获奖感言
2014/01/21 职场文书
岗位职责风险防控
2014/02/18 职场文书
吃空饷专项治理工作实施方案
2014/03/04 职场文书
财务稽核岗位职责
2015/04/13 职场文书
Nginx反向代理、重定向
2022/04/13 Servers