P21
- 1 RGB和BGR
- 2 HSV和HSL,YUV
- 2.1 HSV
- 2.1. 色調H
- 2.1.2 飽和度S
- 2.1.3 明度V
- 2.2 HSL
- 2.3 YUV
- 3 顏色空間轉換實戰
- 4 VScode中報錯問題
- 5 Windows 下 VScode 路徑格式(VScode很強大,路徑格式寫法自由多樣)
RGB/BGR人眼識別的顏色 ;
HSV/HSB/HSL主要是適用于硬件;
YUV視頻用于視頻存儲;
1 RGB和BGR
HSV和HSB表示一個意思,V(value)和B(bright)都表示明度;
YUV視頻領域(節省存儲空間)
2 HSV和HSL,YUV
2.1 HSV
2.1. 色調H
用角度度量,取值范圍為0°~360°,從紅色開始按逆時針方向計算,紅色為0°,綠色為120°,藍色為240°。它們的補色是:黃色為60°,青色為180°,紫色為300°;圓柱,一圈不同未知的顏色。
2.1.2 飽和度S
飽和度S表示顏色接近光譜色的程度。一種顏色,可以看成是某種光譜色與白色混合的結果。其中光譜色所占的比例愈大,顏色接近光譜色的程度就愈高,顏色的飽和度也就愈高。飽和度高,顏色則深而艷。光譜色的白光成分為0,飽和度達到最高。通常取值范圍為0%~100%,值越大,顏色越飽和。越接近邊緣顏色越純。
2.1.3 明度V
明度表示顏色明亮的程度,對于光源色,明度值與發光體的光亮度有關;對于物體色,此值和物體的透射比或反射比有關。通常取值范圍為0%(黑)到100%(白)。豎直方向,下面暗,越往上越亮。
-
V: 豎直方向表示明度,決定顏色空間中顏色的明暗程度,明度越高,表示顏色越明亮,范圍是 0-100%。明度為0表示純黑色(此時顏色最暗)。
-
明度減小,就是往光譜色中添加黑色,光譜色所占的比例也在減小,明度減為0,表示光譜色所占的比例為零,導致整個顏色呈現黑色。
-
H: 在
Hue
一定的情況下,飽和度減小,就是往光譜色中添加白色,光譜色所占的比例也在減小,飽和度減為0,表示光譜色所占的比例為零,導致整個顏色呈現白色。
以紅色為例:
- 10度處,色度H,紅色;
- 飽和度S,中間灰色,越往邊緣越紅;
- 明度V,最下面黑色,越往上越亮;
當 ,RGB三個顏色都值不好判斷顏色;
HSV可以通過色相范圍判斷顏色;
2.2 HSL
HSL豎直方向是亮度,最上面最亮,純白
2.3 YUV
YUV主要用于視頻,簡單了解一下
3 顏色空間轉換實戰
import cv2def callback():passimg=cv2.imread('E:\\Program_Py\\dog.jpeg')#顯示原始圖
cv2.namedWindow('img',cv2.WINDOW_NORMAL)
cv2.imshow('img',img)cv2.namedWindow('color',cv2.WINDOW_NORMAL)colorspaces=[cv2.COLOR_BGR2RGBA,cv2.COLOR_BGR2BGRA,cv2.COLOR_BGR2GRAY,cv2.COLOR_BGR2HSV_FULL,cv2.COLOR_BGR2YUV]cv2.createTrackbar('curcolor','color',0,len(colorspaces),callback)#value代表滑塊的位置,起始位置0while True:index=cv2.getTrackbarPos('curcolor','color')cvt_img=cv2.cvtColor(img,colorspaces[index])cv2.imshow('color',cvt_img)key=cv2.waitKey(1)if key & 0xff ==ord('q'):breakcv2.destroyAllWindows()
原圖
COLOR_BGR2RGB
COLOR_BGR2BGR
COLOR_BGR2GRAY
COLOR_BGR2HSV
COLOR_BGR2YUV
4 VScode中報錯問題
5 Windows 下 VScode 路徑格式(VScode很強大,路徑格式寫法自由多樣)
VScode下Windowsx下路徑
img1=cv2.imread('E:\\Program_Py\\dog.jpeg')
img2=cv2.imread('.\\hello.jpeg')
img3=cv2.imread("E:\\Program_Py\\map1.png")
img4=cv2.imread(".\\chess.png")img5=cv2.imread('E:/Program_Py/map2.png')
img6=cv2.imread('./RMB.jpeg')
img7=cv2.imread("E:/Program_Py/lena.png")
img8=cv2.imread("./smallcat1.jpeg")img9=cv2.imread('E:\Program_Py\left_01.png')
不得不說,VScode還是強大,路徑格式怎么寫都對;
cv2.imshow('img1',img1)
cv2.imshow('img2',img2)
cv2.imshow('img3',img3)
cv2.imshow('img4',img4)
cv2.imshow('img5',img5)
cv2.imshow('img6',img6)
cv2.imshow('img7',img7)
cv2.imshow('img8',img8)
cv2.imshow('img9',img9)key=cv2.waitKey()
mac或 Linux下路徑(更多的沒有去驗證)
img=cv2.imread("C:/Users/pvt/Desktop/test.png")