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基础教程之面向对象的一些概念
Aug 29 Python
Python实现计算最小编辑距离
Mar 17 Python
python3.4用函数操作mysql5.7数据库
Jun 23 Python
利用python将json数据转换为csv格式的方法
Mar 22 Python
Python在图片中插入大量文字并且自动换行
Jan 02 Python
Python中将两个或多个list合成一个list的方法小结
May 12 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
PyTorch使用cpu加载模型运算方式
Jan 13 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 Python
安装pytorch时报sslerror错误的解决方案
May 17 Python
Python快速实现一键抠图功能的全过程
Jun 29 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 工厂模式使用方法
2010/05/18 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题分析
2007/08/12 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
pycharm配置pyqt5-tools开发环境的方法步骤
2019/02/11 Python
python小白切忌乱用表达式
2020/05/29 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
企划经理的岗位职责
2013/11/17 职场文书
集团公司人力资源部岗位职责
2014/01/03 职场文书
行政部岗位职责范本
2014/03/13 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
Python可视化神器pyecharts绘制水球图
2022/07/07 Python