目录:
(一)调用转换函数实现图像色彩空间转换------ cv2.cvtColor函数
(二)色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪某一颜色
正文:
(一)调用转换函数实现图像色彩空间转换------ cv2.cvtColor函数
cvtColor(src,code,dst=None,dstCn=None),作用:将一幅图像从一个色彩空间转换到另一个色彩,空间参数:code,转换的色彩空间。
BGR---》GRAY,BGR---》HSV,BGR---》YUV,BGR--》YCrCb
1 #色彩空间转换
2 defcolor_space_demo(img):3 gray =cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)4 cv2.imshow("gray", gray)5 hsv =cv2.cvtColor(img, cv2.COLOR_BGR2HSV)6 cv2.imshow("hsv", hsv)7 yuv =cv2.cvtColor(img, cv2.COLOR_BGR2YUV)8 cv2.imshow("yuv", yuv)9 ycrcb =cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)10 cv2.imshow("ycrcb", ycrcb)
HSV色彩空间说明: H:0-180 S: 0-255 V: 0-255
(二)色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪某一颜色
利用cv2.inRange函数设阈值,这里注意用的颜色空间是hsv。HSV:HSV颜色空间是孟塞尔彩色空间的简化形式,是一种基于感知的颜色模型。它将彩色信号分为3种属性:色调(Hue,H),饱和度(Saturation,S),亮度(Value,V)。色调表示从一个物体反射过来的或透过物体的光波长,也就是说,色调是由颜色的名称来辨别的,如红、黄、蓝;亮度是颜色的明暗程度;饱和度是颜色的深浅,如深红、浅红。
HSV颜色空间反映了人观察色彩的方式,具有两个显著的特点:
亮度分量与图像的彩色信息无关
“色调”和“饱和度”分量与人感受颜色的方式是紧密相连的
可以根据右表来确定lower_hsv, upper_hsv的取值。
1 #-*- coding=GBK -*-
2 importcv2 as cv3 importnumpy as np4
5
6 defnextrace_object_demo():7 capture = cv.VideoCapture("G:/1.mp4")#导入视频
8 whileTrue:9 ret, frame =capture.read()10 if ret ==False:11 break
12 hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)#转换色彩空间为hsv
13 #设置白色的范围,跟踪视频中的白色
14 lower_hsv = np.array([0, 0, 221])#设置过滤的颜色的低值
15 upper_hsv = np.array([180, 30, 255])#设置过滤的颜色的高值
16 mask = cv.inRange(hsv, lower_hsv, upper_hsv)#调节图像颜色信息(H)、饱和度(S)、亮度(V)区间,选择白色区域
17 cv.imshow("video", frame)18 cv.imshow("mask", mask)19 if cv.waitKey(50) & 0xFF == ord('q'):20 break
21
22 nextrace_object_demo()23 cv.waitKey(0)24 cv.destroyAllWindows()、
参考:
https://blog.csdn.net/u011321546/article/details/79533669
https://blog.csdn.net/Vici__/article/details/100714822#12%E3%80%81%E5%BD%A9%E8%89%B2%E7%A9%BA%E9%97%B4%E8%BD%AC%E6%8D%A2