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简单文本处理的方法
Jul 10 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 Python
Python读取本地文件并解析网页元素的方法
May 21 Python
Python3实现腾讯云OCR识别
Nov 27 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
Dec 11 Python
想学python 这5本书籍你必看!
Dec 11 Python
Python hashlib常见摘要算法详解
Jan 13 Python
python——全排列数的生成方式
Feb 26 Python
python Plotly绘图工具的简单使用
Mar 03 Python
动态设置django的model field的默认值操作步骤
Mar 30 Python
Python 中由 yield 实现异步操作
May 04 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 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
一个更简单的无限级分类菜单代码
2007/01/16 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
JavaScript检测上传文件大小的方法
2015/07/22 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
2014政务公开实施方案
2014/02/19 职场文书
领导班子对照检查材料
2014/09/22 职场文书
2015教师节通讯稿
2015/07/20 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android