點贊 + 關注 + 收藏 = 學會了
在計算機影像處理中,色彩空間是理解和操作影像色彩的重要基礎。每一種色彩空間都有自己的適用範圍。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()
點贊 + 關注 + 收藏 = 學會了