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 相关文章推荐
python网页请求urllib2模块简单封装代码
Feb 07 Python
python批量提交沙箱问题实例
Oct 08 Python
Python命令行参数解析模块getopt使用实例
Apr 13 Python
Python编程把二叉树打印成多行代码
Jan 04 Python
对Python中的@classmethod用法详解
Apr 21 Python
python连接mongodb密码认证实例
Oct 16 Python
Python基础学习之类与实例基本用法与注意事项详解
Jun 17 Python
python调用动态链接库的基本过程详解
Jun 19 Python
关于阿里云oss获取sts凭证 app直传 python的实例
Aug 20 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 Python
基于python检查矩阵计算结果
May 21 Python
细说NumPy数组的四种乘法的使用
Dec 18 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
克隆javascript对象的三个方法小结
2011/01/12 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
Windows8下安装Python的BeautifulSoup
2015/01/22 Python
为Python程序添加图形化界面的教程
2015/04/29 Python
Python smallseg分词用法实例分析
2015/05/28 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
Python3.8安装Pygame教程步骤详解
2020/08/14 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
关于青春的演讲稿
2014/05/05 职场文书
入职担保书怎么写
2014/05/12 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
文言文辞职信
2015/02/28 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
Python中Selenium对Cookie的操作方法
2021/07/09 Python
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android