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 相关文章推荐
编写自定义的Django模板加载器的简单示例
Jul 21 Python
Python字符串转换成浮点数函数分享
Jul 24 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
Python基本socket通信控制操作示例
Jan 30 Python
pyqt5使用按钮进行界面的跳转方法
Jun 19 Python
django之对FileField字段的upload_to的设定方法
Jul 28 Python
python实现的config文件读写功能示例
Sep 24 Python
Python 爬虫的原理
Jul 30 Python
使用Python解析Chrome浏览器书签的示例
Nov 13 Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 01 Python
python实现Nao机器人的单目测距
Sep 04 Python
python中redis包操作数据库的教程
Apr 19 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
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
JavaScript实用技巧(一)
2010/08/16 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
python基础教程之自定义函数介绍
2014/08/29 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
python实现感知机模型的示例
2020/09/30 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
台湾最大网路书店:博客来
2018/03/18 全球购物
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
村优秀党员事迹材料
2014/01/15 职场文书
小学生考试获奖感言
2014/01/30 职场文书
培训主管岗位职责
2014/02/01 职场文书
40岁生日感言
2014/02/15 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
教师工作总结范文2014
2014/11/10 职场文书
小学生学习保证书
2015/02/26 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书