Python OpenCV 彩色轉YCbCr(RGB/BGR to YCbCr)

本篇將介紹如何使用 OpenCV 與 Python 來作彩色影像轉YCbCr(RGB to YCbCr 或 BGR to YCbCr),在寫 Python 影像處理程式時常會用到 OpenCV cvtColor 作顏色空間轉換的功能,接下來介紹怎麼使用 Python 搭配 OpenCV 模組來進行 RGB/BGR 轉 YCbCr 彩色轉YCbCr空間。

範例. 彩色影像轉YCbCr

以下範例 ShengYu 是將 lena.jpg 來作彩色影像轉YCbCr示範,
使用 cv2.cvtColor 將彩色轉 YCbCr 的第二個參數是使用 COLOR_BGR2YCR_CB,不是使用 CV_BGR2YCrCb,也不是 CV_BGR2YCBCR。

使用 cv2.cvtColor 轉換顏色空間時,第二個參數與YCbCr相關的有:
COLOR_BGR2YCR_CB
COLOR_YCR_CB2BGR
COLOR_RGB2YCR_CB
COLOR_YCR_CB2RGB
opencv 預設的排列方式為BGR,而不是RGB唷!
所以這邊使用的是 cv2.COLOR_BGR2YCR_CB

opencv-rgb-to-ycbcr.py
1
2
3
4
5
6
7
8
9
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cv2

image = cv2.imread('lena.jpg')
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2YCR_CB)
cv2.imshow('Input', image)
cv2.imshow('Result', hsv)
cv2.waitKey(0)

結果如下圖所示:

cv2.cvtColor 參數的詳細細節請參考這裡

當然實際上使用時不會只是單純RGB轉換成YCbCr就結束了,通常會去針對YCbCr顏色區間去作後續的處理,常見的例子有膚色偵測,關於這部分下次我再寫一篇給大家講解。

參考
How to convert an rgb image to ycrcb colour space in opencv python - Stack Overflow
https://stackoverflow.com/questions/23396501/how-to-convert-an-rgb-image-to-ycrcb-colour-space-in-opencv-python

其它相關文章推薦
Python OpenCV 彩色轉灰階(RGB/BGR to GRAY)
Python OpenCV 彩色轉HSV(RGB/BGR to HSV)
Python OpenCV 灰階轉彩色(Gray to RGB/BGR)
Python OpenCV 影像二值化 Image Thresholding
Python OpenCV 影像平滑模糊化 blur
Python OpenCV 影像邊緣偵測 Canny Edge Detection
Python OpenCV resize 圖片縮放
小專案 Python OpenCV 圖片轉字元圖畫