web-dev-qa-db-ja.com

画像内の緑色のオブジェクトのみを検出するためのしきい値を定義する方法:Opencv

自然環境でキャプチャした画像から緑色のオブジェクトのみを検出したいのですが、それを定義するにはどうすればよいですか?ここではしきい値を渡したいので、「x」と言います。このxを使用することで、緑色のオブジェクトのみを1つの色(白)に、他の色は別の色(黒)で表示する必要がありますこの。前もって感謝します。

8
S.Am

更新

HSVカラーマップを作成します。このマップを使用して以前よりも色の範囲を見つけるのは_more easy and accurate_です。

そして、greenを見つけるために_(40, 40,40) ~ (70, 255,255) in hsv_の使用を変更する必要があるかもしれません。

enter image description here


元の答え

  1. HSV色空間に変換し、
  2. cv2.inRange(hsv, hsv_lower, hsv_higher)を使用して、緑色のマスクを取得します。

sunflowerにはthe range (in hsv):_(36,0,0) ~ (86,255,255)_を使用します。


ソース画像:

enter image description here

マスクされた緑の領域:

enter image description here

その他の手順:

enter image description here


コアソースコード:

_import cv2
import numpy as np

## Read
img = cv2.imread("sunflower.jpg")

## convert to hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

## mask of green (36,25,25) ~ (86, 255,255)
# mask = cv2.inRange(hsv, (36, 25, 25), (86, 255,255))
mask = cv2.inRange(hsv, (36, 25, 25), (70, 255,255))

## slice the green
imask = mask>0
green = np.zeros_like(img, np.uint8)
green[imask] = img[imask]

## save 
cv2.imwrite("green.png", green)
_

同様:

  1. `cv :: inRange`(OpenCV)を使用して色検出の正しいHSV境界を選択する
23
Kinght 金