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 Django做网页
Nov 04 Python
Python实现获取网站PR及百度权重
Jan 21 Python
Python列表append和+的区别浅析
Feb 02 Python
Python中的super用法详解
May 28 Python
Python聚类算法之DBSACN实例分析
Nov 20 Python
深入理解python多进程编程
Jun 12 Python
Python装饰器(decorator)定义与用法详解
Feb 09 Python
将python2.7添加进64位系统的注册表方式
Nov 20 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
Python龙贝格法求积分实例
Feb 29 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
Apr 02 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 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
Syphon 使用方法
2021/03/03 冲泡冲煮
PHP版自动生成文章摘要
2008/07/23 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
smarty自定义函数用法示例
2016/05/20 PHP
微信支付开发维权通知实例
2016/07/12 PHP
在新窗口打开超链接的方法小结
2013/04/14 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
javascript实现简易计算器
2017/02/01 Javascript
react-router中的属性详解
2017/06/01 Javascript
微信小程序开发animation心跳动画效果
2017/08/16 Javascript
js 开发之autocomplete="off"在chrom中失效的解决办法
2017/09/28 Javascript
js实现鼠标移动到图片产生遮罩效果
2017/10/21 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
Django框架实现的分页demo示例
2019/05/25 Python
django中forms组件的使用与注意
2019/07/08 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
口头翻译求职人自荐信
2013/12/07 职场文书
工厂厂长的职责
2013/12/12 职场文书
超市开店计划书
2014/04/26 职场文书
2014年管理工作总结
2014/11/22 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
老乡聚会通知
2015/04/23 职场文书
世界名著读书笔记
2015/06/25 职场文书
2019年怎样写好导游词?
2019/07/02 职场文书