OpenCV 的颜色空间转换
# coding: utf-8 '''
第13章主要介绍:颜色空间转换
''' import cv2
import numpy as np '''
经常用到的颜色空间转换是: BGR<->Gray 和 BGR<->HSV
cv2.cvtColor(input_image , flag),flag是转换类型:cv2.COLOR_BGR2GRAY,cv2.COLOR_BGR2HSV
HSV(Hue , Saturation , Value):色调,饱和度,明度
色度H:用角度度量,取值范围为0~360,红色开始按逆时针方向计算,红色为0度,绿色为120度,蓝色为240度
饱和度S:接近光谱色的程度,颜色可以看成是光谱色与白色混合结果,光谱色占的比例愈大,颜色接近光谱色的程度
越高,颜色饱和度就越高。光谱色中白色成分为0,饱和度达到最高,取值范围0%~100%,值越大,颜色越饱和
明度V:表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,与物体的透射比有关,取值
范围为0%(黑)~100%(白)
RGB面向硬件,HSV面向用户
在Opencv中
H色度取值范围是[0,179]
S饱和度的取值范围是[0,255]
V明度的取值范围是[0,255]
拿opencv的HSV值与其他软件的HSV值进行对比时,要归一化
''' #获取颜色转换中所有可以使用的flag
def getColorConvertFlag():
# dir() 查找module下的所有类
flags = [i for i in dir(cv2) if i.startswith("COLOR_") ]
print(flags) '''
物体跟踪,可以将图像从BGR转换到HSV后,提取某个特定颜色的物体
提取蓝色物体步骤:
1从视频中获取每一帧图像
2将图像转换到HSV空间
3设置HSV阈值到蓝色范围
4获取蓝色物体
'''
def trackObject():
cap = cv2.VideoCapture(0)
while(1):
ret , frame = cap.read() #转换为hsv
hsv = cv2.cvtColor(frame , cv2.COLOR_BGR2HSV)
#注意这里的上下限都是一个含有HSV的三元组
lower_blue = np.array([110 , 50 , 50])
upper_blue = np.array([130 , 255 , 255])
'''
cv2.inRange(src , lowerb , upperb[,dst])
作用:更改函数对某个单通道中的元素检查其值是否在范围中
src:输入数组,lowerb:包含低边界的数组,upperb:包含高边界的数组,dst:输出数组
如果src(I)符合范围,则dst(I)被设置为255,也就是说dst返回的是非黑即白的图像,而且符合要求
的部分是白色的
'''
#构建物体掩膜(黑白部分),注意这里要使用hsv
mask = cv2.inRange(hsv , lower_blue , upper_blue)
#对原图像和掩膜进行位运算
res = cv2.bitwise_and(frame ,frame , mask = mask)
cv2.imshow("frame" , frame)
cv2.imshow("mask" , mask)
cv2.imshow("res" , res)
k = cv2.waitKey(5) & 0xFF
#ASCII中27是esc
if k == 27:
break
cv2.destroyAllWindows() '''
如何找到要跟踪对象的HSV值,使用cv2.cvtColor,传入的参数是(你想要的)BGR值而不是一幅图。
例如找到绿色的HSV值,在终端输入以下命令
'''
def getHSV():
'''
三层括号对应于:cvArray,cvMatIplImage
也就是第一个括号是数组,第二个是矩阵,第三个是图像
'''
green = np.uint8( [ [ [0 , 255 , 0] ] ])
hsv_green = cv2.cvtColor(green , cv2.COLOR_BGR2HSV)
print(hsv_green)
'''
可以分别用[H-100 , 100 , 100]和[H+100 , 255 , 255]做上下阈值,也可以用图像编辑软件(GIMP)
''' if __name__ == "__main__":
#getColorConvertFlag()
#trackObject()
getHSV()
OpenCV 的颜色空间转换的更多相关文章
- OpenCV 颜色空间转换参数CV_BGR2GRAY改变
OpenCV的颜色空间转换函数: C++: void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 ) 参数d ...
- 颜色空间转换 cvtColor()[OpenCV 笔记13]
void cvtColor(InputArray src, OutputArray dst, ) src: 输入图像 dst: 输出图像 code: 颜色空间转换标识符 OpenCV2的CV_前缀宏命 ...
- opencv学习笔记——颜色空间转换函数cv::cvtColor详解
cv::cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致. 具体 ...
- OpenCV 学习笔记(10)HSV颜色空间及颜色空间转换(RGB-HSV)
1.1 颜色空间介绍 RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色混合而成.然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV(色 调 H ...
- OpenCV学习笔记(5)——颜色空间转换
学习如歌对图像进行颜色空间转换,从BGR到灰度图,或者从BGR到HSV等 创建一个程序用来从一幅图像中获取某个特定颜色的物体 1.转换颜色空间 OpenCV中有超过150种进行颜色空间转化的方法,但是 ...
- 【OpenCV-Python】-颜色空间转换
OpenCV官方教程中文版 for Python,原文为段立辉翻译,感谢Linux公社www.linuxidc.com此文档为自学转述,如有侵权请联系本人 使用工具Python3.6使用包cv2,nu ...
- Python-OpenCV中图像颜色空间转换
目录 cv2.cvtColor() 1. RGB to GRAY 2. RGB to CIE XYZ 3. RGB to YCrCb JPEG 4. RGB to HSV 5. RGB to HLS ...
- (Ooencv3)颜色空间转换
(Ooencv3)颜色空间转换 opencv中有多种色彩空间,包括 RGB.HSI.HSL.HSV.HSB.YCrCb.CIE XYZ.CIE Lab8种,使用中经常要遇到色彩空间的转化,以便生成ma ...
- python数字图像处理(4):图像数据类型及颜色空间转换
一.图像数据类型及转换 在skimage中,一张图片就是一个简单的numpy数组,数组的数据类型有很多种,相互之间也可以转换.这些数据类型及取值范围如下表所示: Data type Range uin ...
随机推荐
- Apache Commons Digester 三(规则注解)
前言 Digester规则的定义除了可以在代码中直接new规则添加到 Digester对象外,还可以用xml配置规则,如下所示: <digester-rules> <pattern ...
- TCP/IP 笔记 - ICMPv4和ICMPv6 : Internet控制报文协议
ICMP是一种面向无连接的协议,负责传递可能需要注意的差错和控制报文,差错指示通信网络是否存在错误(如目的主机无法到达.IP路由器无法正常传输数据包等.注意,路由器缓冲区溢出导致的丢包不包括在ICMP ...
- SaltStack快速入门-配置管理
1:定义远程配置时描述位置,salt配置用的是一种yaml的描述语法,saltstack也是可以分环境的,比如测试环境.生产环境,默认是base,base也是必须存在的,修改内容如下: file_ro ...
- 网络基础知识-TCP/IP协议各层详解
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- Hibernate学习(三)———— 一对多映射关系
序言 前面两节讲了hibernate的两个配置文件和hello world!.还有hibernate的一级缓存和三种状态,基本上hibernate就懂一点了,从这章起开始一个很重要的知识点,hiber ...
- epoll的高效实现原理
epoll的高效实现原理 原文地址:http://blog.chinaunix.net/space.php?uid=26423908&do=blog&id=3058905 开发高性能网 ...
- 【Java并发编程】6、volatile关键字解析&内存模型&并发编程中三概念
volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以 ...
- music-api-next:一款支持网易、xiami和QQ音乐的JS爬虫库
音乐,无界 让音乐无界 如果你苦于挑选一个全方位.多平台.简便易用的音乐爬虫库,music-api-next是不二选择. 特性: 支持网易.虾米和QQ三大主流音乐平台 支持音乐关键词搜索 支持音乐链接 ...
- hive的本地安装部署,元数据存储到mysql中
要想使用Hive先要有hadoop集群的支持,使用本地把元数据存储在mysql中. mysql要可以远程连接: 可以设置user表,把localhost改为%,所有可连接.记住删除root其他用户,不 ...
- 【c++】计算句子中单词的平均长度
Description 编程输入一行文本,计算这行文本的单词平均长度.假设每个单词用至少一个空格或者标点(英文逗号.句号)隔开.使用C++ string类型. Input 输入一行文本,不包含数字 O ...