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中的yield使用方法
Feb 11 Python
在Python 3中实现类型检查器的简单方法
Jul 03 Python
Python处理PDF及生成多层PDF实例代码
Apr 24 Python
Python中利用xpath解析HTML的方法
May 14 Python
CentOS 7下安装Python3.6 及遇到的问题小结
Nov 08 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
Python实现的远程文件自动打包并下载功能示例
Jul 12 Python
python+opencv像素的加减和加权操作的实现
Jul 14 Python
python 实现单通道转3通道
Dec 03 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
Jan 03 Python
python实现控制台输出彩色字体
Apr 05 Python
python nohup 实现远程运行不宕机操作
Apr 16 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生成扭曲及旋转的验证码图片
2013/06/07 PHP
php include和require的区别深入解析
2013/06/17 PHP
详解PHP+AJAX无刷新分页实现方法
2015/11/03 PHP
点击广告后才能获得下载地址
2006/10/26 Javascript
javascript两段代码,两个小技巧
2010/02/04 Javascript
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
基于jquery的表头固定的若干方法
2011/01/27 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
浅析javascript 定时器
2014/12/23 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
2016/06/08 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
Python  连接字符串(join %)
2008/09/06 Python
python PIL模块与随机生成中文验证码
2016/02/27 Python
快速入手Python字符编码
2016/08/03 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
Python如何实现转换URL详解
2019/07/02 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
财产公证书
2014/04/10 职场文书
物理学专业求职信
2014/07/04 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL