Pythonを使って画像処理をする場合、色抽出はよく行われる作業の一つです。しかし、すべての色を抽出するというのは、ときには必要ありません。例えば、黄色い物体が映った画像から黄色い部分だけを抽出する場合があります。今回は、Pythonを使って画像内の黄色い色を抽出する方法を紹介します。

必要なライブラリ

以下のライブラリを使用します。

import cv2
import numpy as np

画像の読み込み

まず、抽出したい画像を読み込みます。

img = cv2.imread('sample.jpg')

色の範囲を指定する

次に、黄色い部分を指定するために、HSV色空間での黄色の範囲を指定します。

lower_yellow = np.array([20, 100, 100])
upper_yellow = np.array([30, 255, 255])

ここでは、H(色相)の値が20から30、S(彩度)とV(明度)の値が100以上で255以下の範囲を黄色と定義しています。

色の抽出

指定した色の範囲を使って、黄色い部分だけを抽出します。

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, lower_yellow, upper_yellow)

結果の表示

最後に、抽出した部分を表示します。

result = cv2.bitwise_and(img, img, mask=mask)
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

これで、指定した画像から黄色い部分を抽出することができます。