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 从远程服务器下载东西的代码
Feb 10 Python
Python教程之全局变量用法
Jun 27 Python
Python Logging 日志记录入门学习
Jun 02 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
如何解决django-celery启动后迅速关闭
Oct 16 Python
python实现计算器功能
Oct 31 Python
wxPython之wx.DC绘制形状
Nov 19 Python
pytorch中的自定义数据处理详解
Jan 06 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
Python按照list dict key进行排序过程解析
Apr 04 Python
sklearn和keras的数据切分与交叉验证的实例详解
Jun 19 Python
Keras中的两种模型:Sequential和Model用法
Jun 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递归删除目录与文件的方法
2015/01/30 PHP
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
带左右箭头图片轮播的JS代码
2013/12/18 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
Node.js编码规范
2014/07/14 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
2016/10/10 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
理解JavaScript中的Proxy 与 Reflection API
2020/09/21 Javascript
如何正确解决VuePress本地访问出现资源报错404的问题
2020/12/03 Vue.js
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
介绍Python中几个常用的类方法
2015/04/08 Python
简单的Python的curses库使用教程
2015/04/11 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
如何基于python实现脚本加密
2019/12/28 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
计算机专业学生求职信分享
2013/12/15 职场文书
车间统计员岗位职责
2014/01/05 职场文书
2014年中班元旦活动方案
2014/02/14 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
关爱残疾人演讲稿
2014/05/24 职场文书
求职自我推荐信
2014/06/25 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书