9.OpenCV的色彩空間變換
文章目錄
- 前言
- 一、色彩空間變換
-
- 1、RGB色彩空間
- 2、GRAY色彩空間
- 3、YCrCb色彩空間
- 4、HSV色彩空間
- 二、OpenCV-Python資源下載下傳
- 總結
前言
色彩空間也稱顔色模型、顔色空間、色彩模型等,它是圖像在計算機内部的一種存儲方式。常見的色彩空間包括RGB、GRAY、XYZ、YCrCb、HSV等。每種色彩空間都有其擅長的問題解決領域。是以在解決具體色彩問題時就需要進行特定的色彩類型空間轉換。
一、色彩空間變換
OpenCV的cv2.Color()函數用于轉換色彩空間類型。
轉換代碼 | 說明 |
---|---|
cv2.COLOR_BGR2RGB | 将BGR色彩空間轉換為RGB色彩空間 |
cv2.COLOR_BGR2GRAY | 将BGR色彩空間轉換為GRAY色彩空間 |
cv2.COLOR_BGR2YCrCb | 将BGR色彩空間轉換為YCrCb色彩空間 |
cv2.COLOR_BGR2HSV | 将BGR色彩空間轉換為HSV色彩空間 |
1、RGB色彩空間
RGB色彩空間使用R(Red,紅)、G(Green,綠)、B(Blue,藍)3種基本顔色表示圖像像素。RGB色彩空間中,圖像的每一個像素用一個三元組表示,三元組中的3個值依次表示紅色、綠色和藍色,依次對應R、G、B通道。
需要注意的是,OpenCV中預設使用BGR色彩空間,它按照B、G、R通道順序表示圖像。
# BGR to RGB
img = cv2.imread('bee.jpg')
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
cv2.imshow('BGR', img)
cv2.imshow('RGB', img_rgb)
k = cv2.waitKey(0)
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('img_rgb.png', img_rgb)
cv2.destroyAllWindows()

2、GRAY色彩空間
GRAY色彩空間通常指8位灰階圖像,其顔色取值範圍為[0,255],共256個灰階級。從BGR色彩空間轉換為GRAY色彩空間的計算公式為:Gray = 0.299R + 0.587G + 0.114B,其中,R、G、B為RGB色彩空間中R、G、B通道的圖像。
# BGR to GRAY
img = cv2.imread('bee.jpg')
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('BGR', img)
cv2.imshow('GRAY', img_gray)
k = cv2.waitKey()
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('img_gray.png', img_gray)
cv2.destroyAllWindows()
3、YCrCb色彩空間
YCrCb色彩空間用亮度Y,紅色Cr、藍色Cb表示圖像。從BGR色彩空間轉換為YCrCb色彩空間的計算公式為:
Y = 0.299R + 0.587G + 0.114B
Cr = 0.713(R - Y) + delta
Cb = 0.564(B - Y) + delta
其中,delta = 128(8位圖像)、delta = 32767(16位圖像)、delta = 0.5(單精度圖像)
# BGR to YCrCb
img = cv2.imread('bee.jpg')
img_YCrCb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
cv2.imshow('BGR', img)
cv2.imshow('GRAY', img_YCrCb)
k = cv2.waitKey()
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('img_YCrCb.png', img_YCrCb)
cv2.destroyAllWindows()
4、HSV色彩空間
HSV色彩空間使用色調(Hue,也稱色相)、飽和度(Saturation)、亮(Value)度表示圖像。
色調H表示顔色,用角度表示,取值範圍為[0°,360°],從紅光開始逆時針方向計算。
飽和度S表示顔色接近光譜色的程度,或表示光譜色中混入白光的比例。光譜色中白光的比例越低,飽和度越高,顔色越深、豔。光譜色中白光比例為0時,飽和度達到最高。飽和度的取值範圍為[0,1]。
亮度V表示顔色的明亮的程度,是人眼可感受到的明暗程度,其取值範圍為[0,1]。
# BGR to HSV
img = cv2.imread('bee.jpg')
img_HSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
cv2.imshow('BGR', img)
cv2.imshow('HSV', img_HSV)
k = cv2.waitKey()
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('img_HSV.png', img_HSV)
cv2.destroyAllWindows()
二、OpenCV-Python資源下載下傳
OpenCV-Python測試用圖檔、中文官方文檔、opencv-4.5.4源碼
總結
以上内容介紹了OpenCV-Python中幾種色彩空間互相變換的基本操作,有關Python、資料科學、人工智能等文章後續會不定期釋出,請大家多多關注,一鍵三連喲(●’◡’●)。