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程序中的实现及简单改进
May 04 Python
整理Python 常用string函数(收藏)
May 30 Python
python中 logging的使用详解
Oct 25 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
Apr 27 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 Python
Python3中列表list合并的四种方法
Apr 19 Python
python实现LRU热点缓存及原理
Oct 29 Python
pandas的相关系数与协方差实例
Dec 27 Python
python实现超级玛丽游戏
Mar 18 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
May 15 Python
Python-split()函数实例用法讲解
Dec 18 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
Nov 11 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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
js函数般调用正则
2008/04/08 Javascript
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
JavaScript生成简单等差数列
2017/11/28 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
python模块smtplib学习
2018/05/22 Python
python os.listdir按文件存取时间顺序列出目录的实例
2018/10/21 Python
Python图像处理之颜色的定义与使用分析
2019/01/03 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
PHP两种查询函数array/row的区别
2013/06/03 面试题
执行总经理岗位职责
2014/02/03 职场文书
应届生求职自荐信
2014/07/04 职场文书
英文感谢信范文
2015/01/21 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
干部培训简讯
2015/07/20 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
Python时间操作之pytz模块使用详解
2022/06/14 Python