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

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

HSV簡單介紹分別為:
色相(H):色彩的顏色名稱,如紅色、黃色等。
飽和度(S):色彩的純度,越高色彩越純,低則逐漸變灰,數值為0-100%。
明度(V):亮度,數值為0-100%。

範例. 彩色影像轉HSV

以下範例 ShengYu 是將 fruits.jpg 來作圖片轉HSV示範,
將影像用 imread 讀進來後,再使用 cvtColor 將影像從彩色轉換成HSV。

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

詳細程式碼如下:

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

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

結果如下圖所示,

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

當然實際上使用時不會只是單純RGB轉換成HSV就結束了,通常會去針對HSV顏色區間去作後續的處理,請看下面的範例。

範例. 物件偵測 - 找出綠色的物體

彩色轉HSV常見的應用可能有物件偵測,去背處理(排除綠色的背景),
以下就來示範如何找出圖片中綠色的水果,類似的應用可能有找出草地的背景,
詳細程式碼如下:

opencv-rgb-to-hsv2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cv2
import numpy as np

image = cv2.imread('fruits.jpg')
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower_green = np.array([35, 43, 46])
upper_green = np.array([77, 255, 255])
mask = cv2.inRange(hsv, lower_green, upper_green)
res = cv2.bitwise_and(image, image, mask=mask)
cv2.imshow('Input', image)
cv2.imshow('Result', res)
cv2.waitKey(0)

結果如下圖所示:

更多影像處理的例子與應用以後再來寫吧!

參考
Changing Colorspaces — OpenCV-Python Tutorials 1 documentation
https://opencv24-python-tutorials.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html#converting-colorspaces
python opencv入门 颜色空间转换(9)Python@fei-CSDN博客
https://blog.csdn.net/tengfei461807914/article/details/75910606
Python-OpenCV顏色空間轉換 - IT閱讀
https://www.itread01.com/p/520326.html

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