python+opencv实现动态物体识别


Posted in Python onJanuary 09, 2018

注意:这种方法十分受光线变化影响

自己在家拿着手机瞎晃的成果图:

python+opencv实现动态物体识别python+opencv实现动态物体识别python+opencv实现动态物体识别python+opencv实现动态物体识别

源代码:

# -*- coding: utf-8 -*- 
""" 
Created on Wed Sep 27 15:47:54 2017 
 
@author: tina 
""" 
import cv2 
import numpy as np 
 
camera = cv2.VideoCapture(0) # 参数0表示第一个摄像头 
# 判断视频是否打开 
if (camera.isOpened()): 
  print('Open') 
else: 
  print('摄像头未打开') 
 
# 测试用,查看视频size 
size = (int(camera.get(cv2.CAP_PROP_FRAME_WIDTH)), 
    int(camera.get(cv2.CAP_PROP_FRAME_HEIGHT))) 
print('size:'+repr(size)) 
 
es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (9, 4)) 
kernel = np.ones((5, 5), np.uint8) 
background = None 
 
while True: 
  # 读取视频流 
  grabbed, frame_lwpCV = camera.read() 
  # 对帧进行预处理,先转灰度图,再进行高斯滤波。 
  # 用高斯滤波进行模糊处理,进行处理的原因:每个输入的视频都会因自然震动、光照变化或者摄像头本身等原因而产生噪声。对噪声进行平滑是为了避免在运动和跟踪时将其检测出来。 
  gray_lwpCV = cv2.cvtColor(frame_lwpCV, cv2.COLOR_BGR2GRAY) 
  gray_lwpCV = cv2.GaussianBlur(gray_lwpCV, (21, 21), 0) 
 
  # 将第一帧设置为整个输入的背景 
  if background is None: 
    background = gray_lwpCV 
    continue 
  # 对于每个从背景之后读取的帧都会计算其与北京之间的差异,并得到一个差分图(different map)。 
  # 还需要应用阈值来得到一幅黑白图像,并通过下面代码来膨胀(dilate)图像,从而对孔(hole)和缺陷(imperfection)进行归一化处理 
  diff = cv2.absdiff(background, gray_lwpCV) 
  diff = cv2.threshold(diff, 148, 255, cv2.THRESH_BINARY)[1] # 二值化阈值处理 
  diff = cv2.dilate(diff, es, iterations=2) # 形态学膨胀 
  # 显示矩形框 
  image, contours, hierarchy = cv2.findContours(diff.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 该函数计算一幅图像中目标的轮廓 
  for c in contours: 
    if cv2.contourArea(c) < 1500: # 对于矩形区域,只显示大于给定阈值的轮廓,所以一些微小的变化不会显示。对于光照不变和噪声低的摄像头可不设定轮廓最小尺寸的阈值 
      continue 
    (x, y, w, h) = cv2.boundingRect(c) # 该函数计算矩形的边界框 
    cv2.rectangle(frame_lwpCV, (x, y), (x+w, y+h), (0, 255, 0), 2) 
 
  cv2.imshow('contours', frame_lwpCV) 
  cv2.imshow('dis', diff) 
 
  key = cv2.waitKey(1) & 0xFF 
  # 按'q'健退出循环 
  if key == ord('q'): 
    break 
# When everything done, release the capture 
camera.release() 
cv2.destroyAllWindows()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
wxPython窗口中文乱码解决方法
Oct 11 Python
python中的字典使用分享
Jul 31 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
解决python删除文件的权限错误问题
Apr 24 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
Python正则表达式和re库知识点总结
Feb 11 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
Sep 25 Python
Python csv文件的读写操作实例详解
Nov 19 Python
Python selenium的基本使用方法分析
Dec 21 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
python中upper是做什么用的
Jul 20 Python
2021年最新用于图像处理的Python库总结
Jun 15 Python
Python设计模式之门面模式简单示例
Jan 09 #Python
Python和Java进行DES加密和解密的实例
Jan 09 #Python
Python设计模式之中介模式简单示例
Jan 09 #Python
python+opencv实现动态物体追踪
Jan 09 #Python
全面了解Nginx, WSGI, Flask之间的关系
Jan 09 #Python
Python设计模式之代理模式简单示例
Jan 09 #Python
基于python内置函数与匿名函数详解
Jan 09 #Python
You might like
php对gzip文件或者字符串解压实例参考
2008/07/25 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
JavaScript中数组对象的那些自带方法介绍
2013/03/12 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
python实现在pickling的时候压缩的方法
2014/09/25 Python
python选择排序算法实例总结
2015/07/01 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
Python sorted对list和dict排序
2020/06/09 Python
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
音乐表演专业毕业生求职信
2013/10/14 职场文书
计算机本科生自荐信
2013/10/15 职场文书
工程总经理工作职责
2013/12/09 职场文书
超市后勤自我鉴定
2014/01/17 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
社区活动总结
2015/02/04 职场文书
投资申请报告
2015/05/19 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
如何在python中实现ECDSA你知道吗
2021/11/23 Python