- OpenCV Python 教程
- OpenCV Python - 首頁
- OpenCV Python - 概述
- OpenCV Python - 環境配置
- OpenCV Python - 讀取影像
- OpenCV Python - 寫入影像
- OpenCV Python - 使用 Matplotlib
- OpenCV Python - 影像屬性
- OpenCV Python - 按位運算
- OpenCV Python - 形狀和文字
- OpenCV Python - 滑鼠事件
- OpenCV Python - 新增軌跡條
- OpenCV Python - 縮放和旋轉
- OpenCV Python - 影像閾值
- OpenCV Python - 影像濾波
- OpenCV Python - 邊緣檢測
- OpenCV Python - 直方圖
- OpenCV Python - 顏色空間
- OpenCV Python - 影像變換
- OpenCV Python - 影像輪廓
- OpenCV Python - 模板匹配
- OpenCV Python - 影像金字塔
- OpenCV Python - 影像加法
- OpenCV Python - 影像混合
- OpenCV Python - 傅立葉變換
- OpenCV Python - 捕捉影片
- OpenCV Python - 播放影片
- OpenCV Python - 從影片中提取影像
- OpenCV Python - 從影像生成影片
- OpenCV Python - 人臉檢測
- OpenCV Python - 均值漂移/CamShift
- OpenCV Python - 特徵檢測
- OpenCV Python - 特徵匹配
- OpenCV Python - 數字識別
- OpenCV Python 資源
- OpenCV Python - 快速指南
- OpenCV Python - 資源
- OpenCV Python - 討論
OpenCV Python - 顏色空間
顏色空間是一種描述如何表示顏色的數學模型。它以特定、可測量且固定的範圍內可能的顏色和亮度值來描述。
OpenCV 支援以下眾所周知的顏色空間:
RGB 顏色空間 - 這是一個加色顏色空間。透過組合紅色、綠色和藍色顏色值來獲得顏色值。每個值都用 0 到 255 之間的數字表示。
HSV 顏色空間 - H、S 和 V 分別代表色調、飽和度和明度。這是 RGB 的替代顏色模型。該模型更接近人眼感知任何顏色的方式。色調值介於 0 到 179 之間,而 S 和 V 值介於 0 到 255 之間。
CMYK 顏色空間 - 與 RGB 相反,CMYK 是一種減色顏色模型。字母分別代表青色、品紅色、黃色和黑色。白光減去紅色得到青色,綠色從白色中減去得到品紅色,白色減去藍色得到黃色。所有值都在 0 到 100% 的範圍內表示。
CIELAB 顏色空間 - LAB 顏色空間具有三個分量,L 表示亮度,A 表示從綠色到品紅色的顏色分量,B 表示從藍色到黃色的分量。
YCrCb 顏色空間 - 其中,Cr 代表 R-Y,Cb 代表 B-Y。這有助於將亮度與色度分離到不同的通道中。
OpenCV 透過cv2.cvtColor()函式支援影像在顏色空間之間的轉換。
cv2.cvtColor() 函式的命令如下:
cv.cvtColor(src, code, dst)
轉換程式碼
轉換由以下預定義的轉換程式碼控制。
| 序號 | 轉換程式碼 & 函式 |
|---|---|
| 1 | cv.COLOR_BGR2BGRA 向 RGB 或 BGR 影像新增 alpha 通道。 |
| 2 | cv.COLOR_BGRA2BGR 從 RGB 或 BGR 影像中刪除 alpha 通道。 |
| 3 | cv.COLOR_BGR2GRAY 在 RGB/BGR 和灰度之間轉換。 |
| 4 | cv.COLOR_BGR2YCrCb 將 RGB/BGR 轉換為亮度-色度 |
| 5 | cv.COLOR_BGR2HSV 將 RGB/BGR 轉換為 HSV |
| 6 | cv.COLOR_BGR2Lab 將 RGB/BGR 轉換為 CIE Lab |
| 7 | cv.COLOR_HSV2BGR HSV 到 RGB/BGR 的反向轉換 |
示例
以下程式顯示了將原始 RGB 顏色空間影像轉換為 HSV 和灰度方案:
import cv2
img = cv2.imread('messi.jpg')
img1 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY )
img2 = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# Displaying the image
cv2.imshow('original', img)
cv2.imshow('Gray', img1)
cv2.imshow('HSV', img2)
輸出