カメラの映像から特定のHSVの値の色を取得したいのですが、範囲の選択で分からないところがあります。
下のコードは一部を切り取ったものです。
sの範囲を40<s<60にしたいのですが、このままs>100の部分を「(40 < s < 60)」に変更するとエラーが出てしまいます。かといって「(h < 50) | (h > 200)」のようにsも「(s > 40) | (s < 60)」とするとおそらくsが40以上もしくは60以下のものを認識することになってしまい、40から60の範囲にはならないと思いました。
どのように書けばよいでしょうか。
def find_rect_of_target_color(image): hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV_FULL) h = hsv[:, :, 0] s = hsv[:, :, 1] mask = np.zeros(h.shape, dtype=np.uint8) mask[((h < 50) | (h > 200)) & (s > 100)] = 255
変えた部分
mask[((h < 50) | (h > 200)) & (40 < s < 60)] = 255 結果(エラーコード) Traceback (most recent call last): File "red.py", line 21, in <module> rects = find_rect_of_target_color(frame) File "red.py", line 9, in find_rect_of_target_color mask[((h < 50) | (h > 200)) & (40 < s < 60)] = 255 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/10/30 04:11