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中super()函数简介及用法分享
Jul 11 Python
python xml解析实例详解
Nov 14 Python
Python 使用with上下文实现计时功能
Mar 09 Python
Dlib+OpenCV深度学习人脸识别的方法示例
May 14 Python
基于树莓派的语音对话机器人
Jun 17 Python
python多线程与多进程及其区别详解
Aug 08 Python
django2.2安装错误最全的解决方案(小结)
Sep 24 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
tensorflow使用指定gpu的方法
Feb 04 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
Mar 25 Python
Python数据模型与Python对象模型的相关总结
Jan 26 Python
python 开心网和豆瓣日记爬取的小爬虫
May 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 读取和编写 XML
2014/11/19 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
javascript 函数速查表
2010/02/07 Javascript
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
如何解决.vue文件url引用文件的问题
2019/01/18 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
python实现备份目录的方法
2015/08/03 Python
Python线程创建和终止实例代码
2018/01/20 Python
Python中利用xpath解析HTML的方法
2018/05/14 Python
python计算列表内各元素的个数实例
2018/06/29 Python
Python生成器的使用方法和示例代码
2019/03/04 Python
如何基于python操作json文件获取内容
2019/12/24 Python
pytorch forward两个参数实例
2020/01/17 Python
Django中的session用法详解
2020/03/09 Python
深入理解Python 多线程
2020/06/16 Python
python二维图制作的实例代码
2020/12/03 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
统计每一学生的平均成绩
2014/06/06 面试题
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
初三家长会邀请函
2014/01/18 职场文书
九年级科学教学反思
2014/01/29 职场文书
学习2014年全国两会心得体会
2014/03/12 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
会议主持词结束语
2015/07/03 职场文书