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轻松实现代码编码格式转换
Mar 26 Python
Python中的字符串替换操作示例
Jun 27 Python
python实现读取并显示图片的两种方法
Jan 13 Python
Python实现繁?转为简体的方法示例
Dec 18 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
Jun 03 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
对PyQt5的输入对话框使用(QInputDialog)详解
Jun 25 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
python pymysql链接数据库查询结果转为Dataframe实例
Jun 05 Python
Linux安装Python3如何和系统自带的Python2并存
Jul 23 Python
Python urlopen()参数代码示例解析
Dec 10 Python
Python并发编程实例教程之线程的玩法
Jun 20 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
超级简单的发送邮件程序
2006/10/09 PHP
smarty的保留变量问题
2008/10/23 PHP
分享一则PHP定义函数代码
2015/02/26 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
PHP session会话操作技巧小结
2016/09/27 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
jquery判断单选按钮radio是否选中的方法
2015/05/05 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
使用bootstrap3开发响应式网站
2016/05/12 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
python实现的各种排序算法代码
2013/03/04 Python
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
python异常处理和日志处理方式
2019/12/24 Python
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
全球在线商店:BerryLook
2019/04/14 全球购物
上海微创软件面试题
2012/06/14 面试题
局领导领导班子四风对照检查材料
2014/09/27 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers