PythonとOpenCVを使って、画像の色空間をHSVに変換し、色の検出を行う方法について説明します。
HSV色空間とは
HSV色空間は、「色相 (Hue)」「彩度 (Saturation)」「明度 (Value)」の3つの組み合わせで色を表現する手法です。この色空間は人間が色を知覚する方法と類似しており、RGB色空間よりも人がイメージした通りの色を作りやすいという特徴があります。
PythonとOpenCVでのHSV色空間の利用
PythonとOpenCVを使って、画像をHSV色空間に変換し、赤・緑・青色の領域を色検出する方法を紹介します。
まず、OpenCVのcvtColor
関数を使って、画像をBGRからHSVに変換します。
import cv2
import numpy as np
img = cv2.imread('input.png')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
次に、特定の色(例えば赤色)を検出するためには、その色のHSV値の範囲を指定します。
hsv_min = np.array([0,64,0])
hsv_max = np.array([30,255,255])
mask = cv2.inRange(hsv, hsv_min, hsv_max)
このinRange
関数は、指定した範囲内の値を持つピクセルを255(白)、それ以外のピクセルを0(黒)にするマスクを作成します。
最後に、このマスクを元の画像に適用することで、指定した色の領域だけを抽出することができます。
masked_img = cv2.bitwise_and(img, img, mask=mask)
以上が、PythonとOpenCVを使ったHSV色空間の基本的な利用方法です。この知識を活用して、さまざまな画像処理を行うことができます。
参考
- OpenCV 画像の色味をHSVで変更してみる。 #Python – Qiita
- 【Python/OpenCV】赤・緑・青色の検出(HSV色空間) | 西住工房
- 【Python/OpenCV】RGBからHSVに変換(cv2.cvtColor) | 西住工房
- OpenCV: Changing Colorspaces.