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二分法实现实例
Nov 21 Python
常见的python正则用法实例讲解
Jun 21 Python
Python中的字符串操作和编码Unicode详解
Jan 18 Python
python解决pandas处理缺失值为空字符串的问题
Apr 08 Python
如何使用Python的Requests包实现模拟登陆
Apr 27 Python
对python判断是否回文数的实例详解
Feb 08 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
python基于property()函数定义属性
Jan 22 Python
解决 jupyter notebook 回车换两行问题
Apr 15 Python
Python virtualenv虚拟环境实现过程解析
Apr 18 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
Pycharm调试程序技巧小结
Aug 08 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中实现进程间通讯
2006/10/09 PHP
PHP 采集程序中常用的函数
2009/12/09 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
Yii中render和renderPartial的区别
2014/09/03 PHP
PHP请求Socket接口测试实例
2016/08/12 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
分析JavaScript数组操作难点
2017/12/18 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
python写入已存在的excel数据实例
2018/05/03 Python
python and or用法详解
2019/06/26 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
英国Amara家居法国网站:家居装饰,现代装饰和豪华礼品
2016/12/15 全球购物
介绍一下gcc特性
2015/10/31 面试题
初一地理教学反思
2014/01/16 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书
二年级作文之动物作文
2019/11/13 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL