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 24 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
Python2实现的图片文本识别功能详解
Jul 11 Python
django orm 通过related_name反向查询的方法
Dec 15 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
Jan 14 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
Python数据分析pandas模块用法实例详解
Nov 20 Python
python异常处理try except过程解析
Feb 03 Python
使用tensorflow根据输入更改tensor shape
Jun 23 Python
python装饰器代码解析
Mar 23 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程序
2012/02/04 PHP
PHP PDOStatement::bindColumn讲解
2019/01/30 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
如何在JavaScript中正确处理变量
2020/12/25 Javascript
[02:51]DOTA2战队出征照拍摄花絮 TI3明星化身时尚男模
2013/07/22 DOTA
python获取糗百图片代码实例
2013/12/18 Python
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
python中装饰器级连的使用方法示例
2017/09/29 Python
Python发展简史 Python来历
2019/05/14 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
python中图像通道分离与合并实例
2020/01/17 Python
python生成任意频率正弦波方式
2020/02/25 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
逼真的HTML5树叶飘落动画
2016/03/01 HTML / CSS
德国BA保镖药房韩文网:kr.ba.de
2017/09/04 全球购物
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
资产评估专业学生的自我鉴定
2013/11/14 职场文书
整改报告怎么写
2014/11/06 职场文书
计划生育汇报材料
2014/12/26 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
禁毒心得体会范文
2016/01/15 职场文书
python 如何在 Matplotlib 中绘制垂直线
2021/04/02 Python
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫