Python | OpenCV 灰階化與色彩空間轉換
📚 前言
在前面我們學會了如何查詢圖片與影片的基本屬性。
這一篇要進一步學習 灰階化與色彩空間轉換,這是影像處理的基礎操作之一,常用於影像分析、特徵擷取與前處理。
🎨 基本概念
- 灰階化 (Grayscale):將彩色圖片轉換為單通道灰階圖片,常用於簡化影像處理。
- 色彩空間轉換 (Color Space Conversion):不同的色彩模型適合不同的應用,例如:
- BGR ↔ Gray
- BGR ↔ HSV
- BGR ↔ LAB
- BGR ↔ YCrCb
🎨 色彩模型是什麼
色彩模型 (Color model) 是一種用數字來表示顏色的數學方式。它定義了顏色如何被描述、儲存與運算。不同的色彩模型會用不同的數值組合來表示同一種顏色,目的在於讓電腦能夠理解並處理顏色。
常見色彩模型解釋
- RGB (Red, Green, Blue) 參考

- 以三原色光的強度組合來表示顏色。
- 例如:紅色 = (255, 0, 0),綠色 = (0, 255, 0)。
- 常用於顯示器、數位影像。
- HSV (Hue, Saturation, Value)參考

- 用「色相、飽和度、亮度」來描述顏色,更接近人眼感知方式。
- 例如:紅色 = (0°, 100%, 100%)。
- 常用於顏色篩選、物件追蹤。
- Lab (Lightness, a, b)參考

- 基於人眼感知的均勻色彩模型,能更準確描述色差。
- 常用於顏色校正、印刷比對。
- Gray (灰階)參考

- 單通道,僅保留亮度資訊。
- 常用於邊緣檢測、二值化。
- YCrCb參考

- 分離亮度 (Y) 與色度 (Cr, Cb),常用於影像壓縮。
- 例如 JPEG 就是基於 YCrCb。
🧩 常見應用場景
| 色彩模型 | 應用範例 |
|---|---|
| RGB/BGR | 顯示與存儲:螢幕顯示、數位影像的基本格式 |
| HSV | 顏色篩選與分割:例如偵測紅色物件、追蹤球體、交通號誌辨識 |
| Lab | 顏色校正與色差分析:影像增強、印刷色彩比對 |
| Gray | 邊緣檢測與二值化:Canny 邊緣偵測、人臉識別前處理 |
| YCrCb | 影像壓縮與膚色偵測:常用於 JPEG 壓縮、膚色區域分割 |
💻 範例程式:圖片灰階化與色彩空間轉換
1 | import cv2 |

圖:圖片灰階化與色彩空間轉換示例

圖:圖片灰階化與色彩空間轉換示例圖
🎬 範例程式:影片灰階化與色彩空間轉換
1 | import cv2 |

圖:影片逐格灰階化與色彩空間轉換示例

圖:影片逐格灰階化與色彩空間轉換示例圖
⚠️ 注意事項
- 灰階化後通道數:灰階圖片只有單通道,處理時要注意 shape 變化。
- 色彩空間差異:不同色彩模型適合不同應用,選擇要依需求而定。
- 顯示問題:部分色彩空間(如 HSV、LAB)直接顯示時可能看起來怪異,因為它們不是設計來直接顯示的。
- 影片處理效能:影片逐格轉換可能造成效能瓶頸,建議搭配壓縮或只處理部分影格。
🎯 結語
這一篇我們學會了如何將圖片與影片進行 灰階化與色彩空間轉換,理解不同色彩模型的特性與用途,並知道它們在實際應用中的角色。
下一篇將進一步學習 圖片縮放、旋轉與翻轉,掌握圖片幾何操作的技巧。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
註:以上參考了
OpenCV Tutorials
OpenCV-Python Tutorials
OpenCV-Python Color Space Conversions
