目录:
(一)调用转换函数实现图像色彩空间转换------ cv2.cvtColor函数
(二)色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪某一颜色
正文:
(一)调用转换函数实现图像色彩空间转换------ cv2.cvtColor函数
cvtColor(src,code,dst=None,dstCn=None),作用:将一幅图像从一个色彩空间转换到另一个色彩,空间参数:code,转换的色彩空间。
BGR---》GRAY,BGR---》HSV,BGR---》YUV,BGR--》YCrCb
1 # 色彩空间转换 2 def color_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 import cv2 as cv 3 import numpy as np 4 5 6 def nextrace_object_demo(): 7 capture = cv.VideoCapture("G:/1.mp4")#导入视频 8 while True: 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