【opencv+python】圖像處理之一、顏色空間RGB,Gray與HSV

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/a352611/article/details/51416769

該系列文章爲 OpenCV+Python Tutorials的學習筆記
代碼託管在Github
轉載請註明: http://blog.csdn.net/a352611/article/details/51416769 [三記的博客]


顏色空間轉換

cv2.cvtColor

  • RGB就是指Red,Green和Blue,一副圖像由這三個channel(通道)構成
  • Gray就是隻有灰度值一個channel
  • HSV即Hue(色調),Saturation(飽和度)和Value(亮度)三個channel

RGB是爲了讓機器更好的顯示圖像,對於人類來說並不直觀,HSV更爲貼近我們的認知,所以通常我們在針對某種顏色做提取時會轉換到HSV顏色空間裏面來處理.
HSV
需要注意的是H的取值範圍爲0°~360°,從紅色開始按逆時針方向計算,紅色爲0°,綠色爲120°,藍色爲240°,想提取紅色時需注意取值應爲-10~10(打比方)OpenCV中H的取值範圍爲0~180(8bit存儲時),


例子

提取藍色物體

HSV = cv2.cvtColor(Img, cv2.COLOR_BGR2HSV)
H, S, V = cv2.split(HSV)
LowerBlue = np.array([100, 100, 50])
UpperBlue = np.array([130, 255, 255])
mask = cv2.inRange(HSV, LowerBlue, UpperBlue)
BlueThings = cv2.bitwise_and(Img, Img, mask=mask)

原圖

藍色物體

PS:

RGB在OpenCV中存儲爲BGR的順序,數據結構爲一個3D的numpy.array,索引的順序是行,列,通道:

BGRImg = cv2.imread(ImgPath)
B = BGRImg[:, :, 0]
G = BGRImg[:, :, 1]
R = BGRImg[:, :, 2]

也可以使用:

BGRImg = cv2.imread(ImgPath)
B, G, R = cv2.split(BGRImg)

注意,cv2.split的速度比直接索引要慢,但cv2.split返回的是拷貝,直接索引返回的是引用(改變B就會改變BGRImg)

TIPS:本文所有代碼均在/Src/ImageProcessing/ColorSpace/ColorSpaces.py

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章