网站建设拟解决问题,长春专业网站建设公司,dede+营销型网站,wordpress网站amp一、学习目标
了解什么是色彩空间了解opencv中色彩空间的转换
目录
[python opencv 计算机视觉零基础到实战] 一、opencv的helloworld
[【python opencv 计算机视觉零基础到实战】二、 opencv文件格式与摄像头读取] 一、opencv的helloworld
[[python opencv 计算机视觉零基…一、学习目标
了解什么是色彩空间了解opencv中色彩空间的转换
目录
[python opencv 计算机视觉零基础到实战] 一、opencv的helloworld
[【python opencv 计算机视觉零基础到实战】二、 opencv文件格式与摄像头读取] 一、opencv的helloworld
[[python opencv 计算机视觉零基础到实战] 三、numpy与图像编辑] 一、opencv的helloworld
[[python opencv 计算机视觉零基础到实战] 四、了解色彩空间及其详解] 一、opencv的helloworld
[[python opencv 计算机视觉零基础到实战] 五、对象追踪] 一、opencv的helloworld 如有错误欢迎指出~
二、了解OpenCV中常见的色彩空间
2.1 什么是色彩空间
色彩空间又可以叫做色域英文是Color Sapce是一种人为建立用于表示色彩的一种“坐标系统”或者说是一种色彩访问的取值系统用于描述色彩。了解色彩空间对我们今后使用opencv进行图像处理很重要在今后对图像处理时将会涉及到色彩空间的内容所以学习了解色彩空间是有必要的。
2.2 RGB颜色空间
首先我们了解RGB颜色空间RGB颜色空间常用于显示器。我们在之前的学习中已经了解了计算机中的图片也是由RGB值进行描述的。RGB利用了三种物理学中的三原色相互进行叠加融合生成各式各样的颜色最终构成一张多彩图像。
在RGB中三种颜色每种都有一个通道并且值小则越黑值大则越亮。我们在之前的学习中通过实践已经知道通道都为0则为黑通道都为255则为白取中间值147则为灰这也是由于“值小则越黑值大则越亮”这个原因。
RGB色彩空间用一个正方体进行描述这个正方体是笛卡尔积。笛卡尔积是指两个集合进行相乘而得到的所有有可能的序列这个序列用笛卡尔坐标系进行表示。由于在opencv中RGB的数据类型为uint8那么就可以有25625625616777216种颜色这些颜色都在这个笛卡尔坐标系中进行表示。
以下是RGB的色彩空间图图片来源于网络。
以上图只能查看一面其实在该立方体中有3个定点表示三原色也就是红、绿、蓝还有3个顶点表示品红、黄以及青与原点00距离最远的顶点颜色为白色其中灰度则为黑色顶点与白色顶点形成的连线的横纵竖坐标数值大小相等的位置。
2.3 HSV颜色空间
HSV颜色空间是一种表示色调、饱和度以及亮度的颜色空间其中Hhue指的是色调就是平常一些颜色如黄色、绿色、红色等Ssaturation指的是饱和度、Vvalue指的是亮度。HSV是一种更接近于人类感知的一种颜色空间它是根据人对色彩的观察从而产生的。
其中H色调是描述纯色S饱和度是与白光叠加后的描述。
以下是HSV的色彩空间图图片来源于网络。
从图中得知色调Hue的取值为0到360但是在opencv中取值为0-180这点是有一定区别S饱和度S取值范围为0.01.0在opencv中取值为0-255V亮度取值范围为0.0-1.0在opencv在opencv中取值为0-2550则是为黑255则是为白。从图中我们可以得知Value值越小则越黑Hue则是色彩范围S则是值越大颜色更加纯。
有一个与HSV非常相似的色彩空间名为HSL。HSL中的L则表示为Lightness两者类似在此不做过多讲解。
2.4 YUV颜色空间
YUV是一种色彩的编码方式其中Y表示明亮度、U是色度、V是浓度U和V决定了颜色。YUV一般用于优化视频信号如彩色视频信号的传输使信号能够与老式的黑白电视进行兼容并且可以在传输时极大的减少频宽。
以下是YUV的色彩空间图图片来源于网络。
2.5 opencv 色彩空间的相互转换
在opencv中提供了图像对于不同色彩空间的转换方法我们可以通过这些方法对图像进行不同色彩空间的转化。首先我们需要读取一张图片。代码如下
import cv2img cv2.imread(rC:\Users\mx\Desktop\1.jpg)
cv2.namedWindow(Image,cv2.WINDOW_AUTOSIZE)
cv2.imshow(Image, img)随后我们通过cvColor方法对图片进行不同色彩空间的转换。cvColor方法接收4个参数在此讲解此节所用到的2个参数这两个参数分别是src与dstsrc指输入的图像类型为Arraydst指输入的图像需要转换成的色彩空间。我们首先尝试将改图片转换为HSV色彩空间图。COLOR_BGR2HSV为转换为HSV色彩空间。我们在以上代码末行加入以下代码
hsvImagecv2.cvtColor(img,cv2.COLOR_BGR2HSV)
cv2.imshow(hsvImage, hsvImage)
cv2.waitKey (0)
cv2.destroyAllWindows()我们接着添加转换各个色彩空间查看效果整体代码如下
import cv2img cv2.imread(rC:\Users\mx\Desktop\1.jpg)
cv2.namedWindow(Image,cv2.WINDOW_NORMAL)
cv2.namedWindow(hsvImage,cv2.WINDOW_NORMAL)
cv2.namedWindow(COLOR_BGR2YUV,cv2.WINDOW_NORMAL)
cv2.namedWindow(COLOR_BGR2GRAY,cv2.WINDOW_NORMAL)hsvImagecv2.cvtColor(img,cv2.COLOR_BGR2HSV)#BGR to HSV
COLOR_BGR2YUVcv2.cvtColor(img,cv2.COLOR_BGR2YUV)#BGR to YUV
COLOR_BGR2GRAYcv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#BGR to GRAYcv2.imshow(Image, img)
cv2.imshow(hsvImage, hsvImage)
cv2.imshow(YUV, COLOR_BGR2YUV)
cv2.imshow(GRAY, COLOR_BGR2GRAY)cv2.waitKey (0)
cv2.destroyAllWindows()运行结果如下 GRAY灰度
HSV
YUV
该系列文章首发于易百纳
三、总结
了解色彩空间是一种对色彩的描述标准了解常见色彩空间RGB、HSV、YUV了解使用opencv对图片实现不同色彩空间的转换了解了色彩空间各个取值对色彩的影响