色彩空间:
颜色空间按照基本结构可以分两大类:基色颜色空间 和 色、亮分离颜色空间。前者的典型是 RGB,还包括 CMY、CMYK、CIE XYZ 等;后者包括 YCC/YUV、Lab、以及一批“色相类颜色空间”。CIE XYZ 是定义一切颜色空间的基准,很奇妙的是,它即属于基色颜色空间,也属于色、亮分离颜色空间,是贯穿两者的枢纽。色、亮分离颜色空间中的子类型“色相类颜色空间”,是把颜色分成一个表亮属性,和两个表色属性,其中有一个表色属性是色相,而色相以外的两个属性可以选用不同的变量来定义,而色相的概念不变,因此就构成一族共同使用色相属性,另加表亮属性和表色属性各一个组成的颜色空间,它们是颜色空间中的一个家族,暂且统称为 HSB 颜色空间。
RGB和CMY颜色模型都是面向硬件的,而HSV(HueSaturation Value)颜色模型是面向用户的。
补充:
色光三原色 RGB:吸收俩种,反射自身颜色;在屏幕上显示的图像,就是RGB模式表现的
色料三原色CMY:反射两种,吸收一种颜色;在印刷品上看到的图像,就是CMYK模式表现的
较为详细的笔记:参考以下链接
https://blog.csdn.net/ABigDeal/article/details/84836269
色彩空间转换:
import cv2 as cv src = cv.imread("./01.jpg") def color_space(image): #色彩空间转换API """ 将RGB的图像转换成其他类型 :param image: :return: """ gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY) cv.imshow("gray",gray) hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV) # h 0-180 s 0-255 v 0-255 cv.imshow("hsv",hsv) yuv = cv.cvtColor(image,cv.COLOR_BGR2YUV) cv.imshow("yuv",yuv) ycrcb = cv.cvtColor(image,cv.COLOR_BGR2YCrCb) cv.imshow("ycrcb",ycrcb)
inRange
def extrace_object(): """ capture: 视频文件对象 ret: 返回结果,True为视频还存在,False表示视频读取完成了 frame: 帧数 :return: """ capture = cv.VideoCapture("./wqz.mp4") while 1: ret , frame = capture.read() if ret == False: break hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV) lower_hsv = np.array([100,43,46]) upper_hsv = np.array([124,255,255]) mask = cv.inRange(hsv,lowerb=lower_hsv,upperb=upper_hsv) #过滤出蓝色 cv.imshow("video",frame) cv.imshow("mask",mask) c = cv.waitKey(40) if c == 27: break
效果:
通道分离:
src = cv.imread("./01.jpg") cv.imshow("input_img",src) r , g , b = cv.split(src) #通道分离 cv.imshow("red",r) cv.imshow("green",g) cv.imshow("blue",b)
通道合并:
src = cv.imread("./01.jpg") cv.imshow("input_img",src) r , g , b = cv.split(src) #通道分离 src = cv.merge([r,g,b]) #通道合并 cv.imshow(",merge",src) cv.waitKey(0) cv.destroyAllWindows()