點贊 + 關注 + 收藏 = 學會了
在計算機圖像處理中,色彩空間是理解和操作圖像色彩的重要基礎。每一種色彩空間都有自己的適用範圍。RGB 是比較常見的色彩空間,除此之外比較常見的色彩空間還有 GRAY、HSV、Lab、YUV 等。
為什麼會有這麼多色彩空間呢?有兼容性的原因,也有為了方便計算的原因。比如 YUV 這個是電視信號系統採用的,以前的老電視是黑白電視,只需要一個顏色通道,後來出現了彩色電視,為了使視頻信號能夠兼容黑白電視和彩色電視,就將 RGB 專橫 YUV,其中 Y通道 是圖像的亮度,黑白電視只需要使用這個通道就能顯示出黑白影像了,而彩色電視需要將 YUV 轉成 RGB 來顯示。
我們都知道 RGB 表示「紅綠藍」三種顏色,一個像素包含 RGB 3個通道,將這3個通道融合可以渲染出不同的顏色。但 RGB 三個通道融合的值很難去直觀看出到底是什麼顏色。如果要做一個摳圖功能,顯然用 HSV(H色相、S飽和度、V明度) 會更合適。
所以就出現了這麼多種色彩空間。
色彩空間轉換方法
有時為了計算方便,會將圖片的顏色空間轉換成別的類型。
OpenCV 提供了 cv2.cvtColor() 方法可以實現不同色彩空間之間的轉換。例如,將 RGB 轉換為 HSV、LAB 或 YUV,或者反向轉換,都可以通過該函數實現。
常見的色彩空間轉換
cv2.COLOR_BGR2RGB:BGR 轉 RGBcv2.COLOR_BGR2HSV:BGR 轉 HSVcv2.COLOR_BGR2LAB:BGR 轉 LABcv2.COLOR_BGR2YUV:BGR 轉 YUVcv2.COLOR_RGB2BGR:RGB 轉 BGRcv2.COLOR_HSV2BGR:HSV 轉 BGRcv2.COLOR_BGR2GRAY:RGB 轉 GRAY
在 OpenCV 中,圖像的默認色彩空間通常是 BGR(藍、綠、紅),與 RGB 的差別僅在於通道順序。
cv2.cvtColor() 接收3個參數。
cv2.cvtColor(src, code[, dstCn]) -> dst
src:要處理的圖像。code:色彩空間轉換代碼,比如cv2.COLOR_BGR2HSV。dstCn:目標通道數,可選。如果要指定通道數,這個值必須是整數。
舉個例子,將一張 RGB 的圖片轉成灰度圖(GRAY)。
![上傳中...]()
import cv2
# 讀取圖像
image = cv2.imread("example.png") # 替換為圖像的路徑
# 將 BGR 轉換為灰度圖
grayImg = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 展示原圖
cv2.imshow("Image", image)
# 展示灰度圖
cv2.imshow("GrayImg", grayImg)
cv2.waitKey(0)
cv2.destroyAllWindows()
點贊 + 關注 + 收藏 = 學會了