2017-08-12 26 views
2

[r、g、b]のRGB形式のOpenCV画像のピクセルがあります。私は[150,150,150]より暗い色を見つけるとforループを止めるようにテストを実行したいと思います。Python、RGBの色の比較

これは私がこれまで持っているものです。

def test(): 
    for l in range(y, y+h): 
     for d in range(x, x+w): 
      print(image[l,d][0]) 
      if image[l,d] <= [150,150,150]: 
       return; 
      image[l,d] = [0,0,0] 

はしかし動作しません。何か案は?

+0

はい、そうです。画像(l、d)= [0 255 0] –

+0

'すべての場合(画像のアイテムのアイテム<= 150):'。これは機能しますか? – roganjosh

+0

はい。どうもありがとうございます。 –

答えて

3

PythonのOpenCVイメージはnumpy配列として表されるため、各ピクセル値もnumpy配列になります。これは、比較演算がベクトル化されることを意味し、ブール値の配列を返す、例

>>> image[l,d] <= [150,150,150] 
array([ True, True, True], dtype=bool) 

のために今、あなたは条件が、すべての項目のペアのために満足していることを確認したいです。それはが出場するところです。

>>> np.all(image[l,d] <= [150,150,150]) 
True 

実際、numpy配列にはメンバメソッドall()があります。これは同じことを行います。

>>> (image[l,d] <= [150,150,150]).all() 
True