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生成excel的实例代码
Nov 08 Python
速记Python布尔值
Nov 09 Python
Python3一行代码实现图片文字识别的示例
Jan 15 Python
Python实现ping指定IP的示例
Jun 04 Python
python 实现将多条曲线画在一幅图上的方法
Jul 07 Python
Python统计分析模块statistics用法示例
Sep 06 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
python 实现矩阵按对角线打印
Nov 29 Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 Python
python中数字是否为可变类型
Jul 08 Python
python使用正则表达式匹配txt特定字符串(有换行)
Dec 09 Python
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 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 stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
php cli换行示例
2014/04/22 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
js文字横向滚动特效
2015/11/11 Javascript
基于jquery实现左右按钮点击的图片切换效果
2021/01/27 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
使用Python生成url短链接的方法
2015/05/04 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
在Python中过滤Windows文件名中的非法字符方法
2019/06/10 Python
Django更新models数据库结构步骤
2020/04/01 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
2020/06/06 Python
python requests库的使用
2021/01/06 Python
scrapy-splash简单使用详解
2021/02/21 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
Shopping happy life西班牙:以最优惠的价格提供最好的时尚配饰
2020/03/13 全球购物
霸气队列口号
2014/06/18 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
2014年领导班子工作总结
2014/12/11 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
详解MySQL中的pid与socket
2021/06/15 MySQL
《艾尔登法环》发布最新「战技」宣传片
2022/04/03 其他游戏