前提・実現したいこと
現在ある画像のHSVの平均値を求めようとしているのですが,明るい場所と暗い場所を除いたHue(色相)の値を求めようと,hの平均値を求める際にs,vに関して条件を設けたのですがエラーが出てしまいました.
どなたかご教示願います。
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-22-b5f8f6154722> in <module> 18 print(round(mean3,1)) 19 ---> 20 average(img) <ipython-input-22-b5f8f6154722> in average(img) 11 # チャンネルごとに分解 12 h, s, v = cv2.split(hsv) ---> 13 mean1 = h[170 < s and 200 < v].mean() 14 mean2 = s.mean() 15 mean3 = v.mean() ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
該当のソースコード
python
1import matplotlib.pyplot as plt 2import cv2 #OpenCVをインポート 3 4img = cv2.imread("test.jpg") 5 6def average(img): 7 8 img = cv2.imread("test.jpg") 9 img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 10 hsv = cv2.cvtColor(img, cv2.COLOR_RGB2HSV) 11 # チャンネルごとに分解 12 h, s, v = cv2.split(hsv) 13 mean1 = h[170 < s and 200 < v].mean() 14 mean2 = s.mean() 15 mean3 = v.mean() 16 print(round(mean1,1)) 17 print(round(mean2,1)) 18 print(round(mean3,1)) 19 20average(img)
試したこと
mean1 = h[170 < s & v].mean()
以上の様にすると上手く動作したのですが,sとvで条件の値を分けると上手くいきません.
回答1件
あなたの回答
tips
プレビュー