使用Python + OpenCV图像处理如何实现色彩空间转换

  介绍

这篇文章将为大家详细讲解有关使用Python + OpenCV图像处理如何实现色彩空间转换,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

代码如下:

#色彩空间转换   进口cv2简历   def color_space_demo (img):   灰色=简历。cvtColor (img cv.COLOR_BGR2GRAY) # RGB转换为灰色这里的灰色是单通道的   cv.imshow (“gray",灰色)   hsv=简历。cvtColor (img cv.COLOR_BGR2HSV) # RGB转换为HSV   cv.imshow (“hsv" hsv)   yuv=简历。cvtColor (img cv.COLOR_RGB2YUV) # RGB转换为YUV   cv.imshow (“yuv" yuv)   Ycrcb=简历。cvtColor (img cv.COLOR_RGB2YCrCb) # RGB转换为YCrCb   cv.imshow (“Ycrcb" Ycrcb)   src=https://www.yisu.com/zixun/cv.imread (D:/imageload/example.png)   cv.namedWindow (first_image, cv.WINDOW_AUTOSIZE)   简历。imshow (first_image, src)   color_space_demo (src)   cv.waitKey (0)   cv.destroyAllWindows ()

运行结果:

使用Python + OpenCV图像处理如何实现色彩空间转换

1. RGB就是指红色,绿色和蓝色,一副图像由这三个通道(通道)构成

2.灰色就是只有灰度值一个通道。

3. hsv即色调(色调),饱和(饱和度)和价值(亮度)三个频道

1。百度百科说,将原来的RGB (R, G, B)中的R, G, B统一按照一种转换关系用灰色替换,形成新的颜色RGB(灰色、灰色、灰色),用它替换原来的RGB (R, G, B)就是灰度图。

使用Python + OpenCV图像处理如何实现色彩空间转换

2. OpenCV里,COLOR_RGB2GRAY是将三通道RGB对象转换为单通道的灰度对象。

3。将单通道灰度对象转换为RGB时,生成的RGB对象的每个通道的值是灰度对象的灰度值。

RGB是为了让机器更好的显示图像,对于人类来说并不直观,HSV更为贴近我们的认知,所以通常我们在针对某种颜色做提取时会转换到HSV颜色空间里面来处理只

<强>补注:

1。HSV如下图:

使用Python + OpenCV图像处理如何实现色彩空间转换

2. OpenCV里HSV色彩空间范围为:,H: 0 - 180,S: 0 - 255,,V: 0 - 255

3。常见的色彩空间有RGB, HSV,他YCrCb, YUV,其中最常用的是RGB, HSV, YUV,其中YUV就是YCrCb(详见百度百科)。其中YUV的“Y”表示明亮度(亮度或亮度),也就是灰阶值;而“U”和“V”表示的则是色度(色度或浓度),作用是描述影像色彩及饱和度,用于指定像素的颜色。

代码如下:

#视频特定颜色追踪   进口cv2简历   进口numpy np   def extrace_object_demo ():   捕捉=cv.VideoCapture (“E/imageload/video_example.mp4"):   而真正的:   ret,?capture.read ()   如果ret==假:   打破   hsv=简历。cvtColor(框架、cv.COLOR_BGR2HSV) #色彩空间由RGB转换为HSV   lower_hsv=np。数组([100年,43岁,46])#设置要过滤颜色的最小值   upper_hsv=np。数组([124、255、255])#设置要过滤颜色的最大值   掩码=简历。inRange (hsv lower_hsv upper_hsv) #调节图像颜色信息(H)、饱和度(S),亮度(V)区间,选择蓝色区域   cv.imshow (“video"框架)   cv.imshow (“mask",面膜)   c=cv.waitKey (40)   如果c==27: #按键Esc的ASCII码为27   打破   extrace_object_demo ()   cv.destroyAllWindows ()

运行结果:

这里只放追踪蓝色部分的截的图,仅供参考

使用Python + OpenCV图像处理如何实现色彩空间转换

<强>注意:

1。Opencv的inRange函数:可实现二值化功能

函数原型:inRange (src, lowerb upperb [, dst)→dst ,,,,

函数的参数意义:第一个参数为原数组,可以为单通道,多通道。第二个参数为下界,第三个参数为上界

例如:mask =, cv2.inRange (hsv, lower_blue,, upper_blue),,,,

第一个参数:hsv指的是原图(原始图像矩阵)

第二个参数:lower_blue指的是图像中低于这个lower_blue的值,图像值变为255

第三个参数:upper_blue指的是图像中高于这个upper_blue的值,图像值变为255(即255代表黑色)

而在lower_blue ~ upper_blue之间的值变成0(0代表白色)

即:Opencv的inRange函数可提取特定颜色,使特定颜色变为白色,其他颜色变为黑色,这样就实现了二值化功能

使用Python + OpenCV图像处理如何实现色彩空间转换