python实现超简单的视频对象提取功能


Posted in Python onJune 04, 2018

视频对象提取

与其说是视频对象提取,不如说是视频颜色提取,因为其本质还是使用了OpenCV的HSV颜色物体检测。下面话不多说了,来一起看看详细的介绍吧。

HSV介绍

HSV分别代表,色调(H:hue),饱和度(S:saturation),亮度(V:value),由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model);

色调(H:hue):用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;(OpenCV中H的取值范围为0~180,8bit存储时);

饱和度(S:saturation):取值范围为0~255,值越大,颜色越饱和;

亮度(V:value):取值范围为0(黑色)~255(白色);

效果展示

python实现超简单的视频对象提取功能

实现思路

如上效果图所示,我们要做的就是把视频中的绿色的小猪佩奇识别出来即可,下面是的识别步骤:

  • 使用PS取的小猪佩奇颜色的HSB值,相当于OpenCV的HSV,不过PS的HSV(HSB)取值是:0~360、0~1、0~1,而OpenCV的HSV是:0~180、0~255、0~255,所以要对ps的hsv进行处理,H/2、SV*255;
  • 使用OpenCV位“与运算”提取HSV的颜色部分画面;
  • 使用高斯模糊优化图片;
  • 图片展示;

PS中工具栏右侧HSB显示:

python实现超简单的视频对象提取功能

完整代码

#coding=utf-8
#HSV转换(颜色提取)

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while (1):
 _, frame = cap.read()
 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

 #在PS里用取色器的HSV
 psHSV = [112, 89, 52]
 diff = 40 #上下浮动值
 #因为PS的HSV(HSB)取值是:0~360、0~1、0~1,而OpenCV的HSV是:0~180、0~255、0~255,所以要对ps的hsv进行处理,H/2、SV*255
 lowerHSV = [(psHSV[0] - diff) / 2, (psHSV[1] - diff) * 255 / 100,
    (psHSV[2] - diff) * 255 / 100]
 upperHSV = [(psHSV[0] + diff) / 2, (psHSV[1] + diff) * 255 / 100,
    (psHSV[2] + diff) * 255 / 100]

 mask = cv2.inRange(hsv, np.array(lowerHSV), np.array(upperHSV))

 #使用位“与运算”提取颜色部分
 res = cv2.bitwise_and(frame, frame, mask=mask)
 #使用高斯模式优化图片
 res = cv2.GaussianBlur(res, (5, 5), 1)

 cv2.imshow('frame', frame)
 # cv2.imshow('mask', mask)
 cv2.imshow('res', res)
 if cv2.waitKey(1) & 0xFF == ord('q'):
  break

cv2.destroyAllWindows()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
讲解Python中for循环下的索引变量的作用域
Apr 15 Python
Python中的anydbm模版和shelve模版使用指南
Jul 09 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 Python
python实现用户答题功能
Jan 17 Python
Python 25行代码实现的RSA算法详解
Apr 10 Python
浅析python的优势和不足之处
Nov 20 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
python正则表达式实例代码
Mar 03 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
Python中关于logging模块的学习笔记
Jun 03 Python
python设置中文界面实例方法
Oct 27 Python
利用python库在局域网内传输文件的方法
Jun 04 #Python
基于python的图片修复程序(实现水印去除)
Jun 04 #Python
python实现requests发送/上传多个文件的示例
Jun 04 #Python
python3写的简单本地文件上传服务器实例
Jun 04 #Python
Python装饰器的执行过程实例分析
Jun 04 #Python
使用Python监控文件内容变化代码实例
Jun 04 #Python
Python操作mongodb的9个步骤
Jun 04 #Python
You might like
php创建多级目录代码
2008/06/05 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
PHP制作用户注册系统
2015/10/23 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
2013/11/12 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
零基础学Python(一)Python环境安装
2014/08/20 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
Python实现控制台进度条功能
2016/01/04 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
Python 从相对路径下import的方法
2018/12/04 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
2019年Java面试必问之经典试题
2012/09/12 面试题
职称自我鉴定
2013/10/15 职场文书
婚纱摄影师求职信
2014/03/07 职场文书
党员承诺书怎么写
2014/05/20 职场文书
投资合作意向书范本
2015/05/08 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS