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处理cookie详解
Feb 07 Python
从零学python系列之新版本导入httplib模块报ImportError解决方案
May 23 Python
Python中强大的命令行库click入门教程
Dec 26 Python
python logging日志模块的详解
Oct 29 Python
一篇文章搞定Python操作文件与目录
Aug 13 Python
python实现画出e指数函数的图像
Nov 21 Python
pytorch 数据处理:定义自己的数据集合实例
Dec 31 Python
Windows系统下pycharm中的pip换源
Feb 23 Python
基于python模拟bfs和dfs代码实例
Nov 19 Python
Python读取pdf表格写入excel的方法
Jan 22 Python
Python实现打乒乓小游戏
Sep 25 Python
Pygame Draw绘图函数的具体使用
Nov 17 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重定向的3种方式
2013/03/07 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
网页javascript精华代码集
2007/01/24 Javascript
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
Node.js文件操作详解
2014/08/16 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
python常见数制转换实例分析
2015/05/09 Python
Python实现的knn算法示例
2018/06/14 Python
对python中的 os.mkdir和os.mkdirs详解
2018/10/16 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
浅谈HTML5 &amp; CSS3的新交互特性
2016/07/19 HTML / CSS
正隆泰信息技术有限公司上机题
2012/06/14 面试题
校园之星获奖感言
2014/01/29 职场文书
社区活动邀请函范文
2014/01/29 职场文书
六一儿童节主持词
2014/03/21 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书
工程主管竞聘书
2015/09/15 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
导游词之河北邯郸
2019/09/12 职场文书
Python3.10的一些新特性原理分析
2021/09/15 Python
国产动画《万圣街》日语配音版制作决定!
2022/03/20 国漫
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python