Open CV 色彩空間

2022-03-13 06:03:04 字數 2326 閱讀 2796

顏色空間按照基本結構可以分兩大類:基色顏色空間 和 色、亮分離顏色空間。前者的典型是 rgb,還包括 cmy、cmyk、cie xyz 等;後者包括 ycc/yuv、lab、以及一批「色相類顏色空間」。cie xyz 是定義一切顏色空間的基準,很奇妙的是,它即屬於基色顏色空間,也屬於色、亮分離顏色空間,是貫穿兩者的樞紐。色、亮分離顏色空間中的子型別「色相類顏色空間」,是把顏色分成乙個錶亮屬性,和兩個表色屬性,其中有乙個表色屬性是色相,而色相以外的兩個屬性可以選用不同的變數來定義,而色相的概念不變,因此就構成一族共同使用色相屬性,另加錶亮屬性和表色屬性各乙個組成的顏色空間,它們是顏色空間中的乙個家族,暫且統稱為 hsb 顏色空間。

rgb和cmy顏色模型都是面向硬體的,而hsv(huesaturation value)顏色模型是面向使用者的。

補充:色光三原色 rgb:吸收倆種,反射自身顏色;在螢幕上顯示的影象,就是rgb模式表現的

色料三原色cmy:反射兩種,吸收一種顏色;在印刷品上看到的影象,就是cmyk模式表現的

較為詳細的筆記:參考以下鏈結

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)

def extrace_object():

"""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

效果:

r , g , b = cv.split(src) #通道分離

r , g , b = cv.split(src) #通道分離

src = cv.merge([r,g,b]) #通道合併

opencv空間色彩轉換

opencv中空間色彩轉換函式為 cvtcolor 提供不同空間的色彩轉換,如將rgb三通道轉換成單通道灰度圖等,其api如下 void cv cvtcolor inputarray src,outputarray dst,int code,int dstcn 0 python版本api為 dst ...

OpenCV的色彩空間例項

本文使用python實現。色彩空間常用的就如下幾種 rgb hsv hsi ycrcb yuv rgb色彩就是常說的光學三原色,r代表red 紅色 g代表green 綠色 b代表blue 藍色 自然界中肉眼所能看到的任何色彩都可以由這三種色彩混合疊加而成。hsv hue,saturation,val...

opencv常用色彩空間

1 r red 紅 g green 綠 b blue 藍 2 色光三原色 rgb 吸收倆種,反射自身顏色 在螢幕上顯示的影象,就是rgb模式表現的。3 rgb的每個元素在計算機記憶體中占用1個位元組 8bit 所以rgb每個元素的取值範圍為 0 255 2的8次方 4 我們常用的jpg格式的就是三通...