这篇文章将为大家详细讲解有关使用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 ()
运行结果:
1. RGB就是指红色,绿色和蓝色,一副图像由这三个通道(通道)构成
2.灰色就是只有灰度值一个通道。
3. hsv即色调(色调),饱和(饱和度)和价值(亮度)三个频道
1。百度百科说,将原来的RGB (R, G, B)中的R, G, B统一按照一种转换关系用灰色替换,形成新的颜色RGB(灰色、灰色、灰色),用它替换原来的RGB (R, G, B)就是灰度图。
2. OpenCV里,COLOR_RGB2GRAY是将三通道RGB对象转换为单通道的灰度对象。
3。将单通道灰度对象转换为RGB时,生成的RGB对象的每个通道的值是灰度对象的灰度值。
RGB是为了让机器更好的显示图像,对于人类来说并不直观,HSV更为贴近我们的认知,所以通常我们在针对某种颜色做提取时会转换到HSV颜色空间里面来处理只
<强>补注:强>
1。HSV如下图:
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 ()
运行结果:
这里只放追踪蓝色部分的截的图,仅供参考
<强>注意:强>
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函数可提取特定颜色,使特定颜色变为白色,其他颜色变为黑色,这样就实现了二值化功能