PythonとOpenCVを使用して、画像から特定の色を検出する方法について説明します。この記事では、OpenCVの色空間変換と色範囲指定によるマスキング処理を中心に解説します。
OpenCVと色空間
OpenCVは、画像処理やコンピュータビジョンに広く使用されるライブラリです。OpenCVでは、色を表現するためにBGR色空間がデフォルトで使用されますが、色検出を行う際にはHSV色空間がよく使用されます。
HSV色空間は、「色相 (Hue)」「彩度 (Saturation)」「明度 (Value)」の3つの組み合わせで色を表現します。この色空間は人間が色を知覚する方法と類似しており、RGB色空間よりも人がイメージした通りの色を作りやすいという特徴があります。
PythonとOpenCVを使用した色検出
以下に、PythonとOpenCVを使用して画像から特定の色を検出する基本的なコードを示します。
import cv2
import numpy as np
# 画像の読み込み
img = cv2.imread("sample.jpg")
# BGR色空間からHSV色空間への変換
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 色検出の閾値設定
lower = np.array([90,64,0])
upper = np.array([150,255,255])
# 色検出の閾値範囲内の色を抽出するマスクを作成
frame_mask = cv2.inRange(hsv, lower, upper)
# 論理演算で色検出
dst = cv2.bitwise_and(img, img, mask=frame_mask)
このコードでは、まずcv2.cvtColor
関数を使用して画像をBGR色空間からHSV色空間に変換します。次に、cv2.inRange
関数を使用して指定した色範囲内のピクセルを抽出するマスクを作成します。最後に、cv2.bitwise_and
関数を使用して元の画像とマスクを論理演算し、指定した色範囲のピクセルのみを含む画像を生成します。
このように、PythonとOpenCVを使用すると、簡単に画像から特定の色を検出することができます。色検出の閾値を変更することで、さまざまな色を検出することが可能です。
まとめ
PythonとOpenCVを使用して画像から特定の色を検出する方法について説明しました。この技術は、画像処理やコンピュータビジョンの分野で広く利用されています。PythonとOpenCVの学習に役立てていただければ幸いです。.