0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

cv2を使った赤・緑検知

Posted at

ライントレースをカメラで行うにあたり、赤色と緑色のマークを検知する必要がありました。
今回は cv2 を用いて色検知を行う方法をまとめます。


色検知の基本

OpenCVでは色検知に HSV色空間 を使うのが一般的です。
OpenCVでのHSVでは値の範囲が次のようになっています。

  • H (色相): 0 ~ 179
  • S (彩度): 0 ~ 255
  • V (明度): 0 ~ 255

RGBと異なり、色相(Hue)を独立して扱えるため、明るさや照明条件の影響を受けにくくなります。

HSV値の詳細は、こちらの記事が参考になります。


モジュールのインポート

import cv2
import numpy as np

赤・緑の閾値設定

今回の検知で使用した閾値は以下の通りです。

lower_green = np.array([30, 40, 20])
upper_green = np.array([90, 255, 255])

lower_red = np.array([150, 130, 160])
upper_red = np.array([179, 255, 255])

マスクの作成

画像をHSVに変換し、閾値を使ってマスクを作成します。

hsv = cv2.cvtColor(orig_image, cv2.COLOR_RGB2HSV)

red_mask = cv2.inRange(hsv, lower_red, upper_red)
green_mask = cv2.inRange(hsv, lower_green, upper_green)

これで赤色と緑色の領域を抽出できます。

ノイズ処理

実際の環境では小さなゴミやノイズを拾ってしまうことがあります。
そのため、最小面積を設定して小さい領域を無視したり、モルフォロジー処理(膨張・収縮)を追加すると安定します。

コードの詳細は以下のリポジトリにまとめています。

~Thank you for Reading~

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?