HSV 色空間を使用した OpenCV での赤色検出の強化
この記事は、OpenCV の HSV を使用した画像内の赤色検出の精度を向上させることを目的としていますcolor space.
問題:
cv::inRange と HSV 色空間を使用して画像内の赤い四角形を検出すると、現在満足のいく結果が得られません。望ましい結果は、赤い四角形を効果的に分離することです。
解決策:
HSV では、赤色は値 180 を囲む範囲に広がります。この場合、HSV 範囲には [0,10] と [170, 180] の両方の値が含まれる必要があります。
コードの更新:
次のコード スニペットは、更新されたコードを示しています。アプローチ:
# Include OpenCV library import cv2 # Define HSV range for red color H_MIN1 = 0 H_MAX1 = 10 H_MIN2 = 170 H_MAX2 = 180 S_MIN = 70 S_MAX = 255 V_MIN = 50 V_MAX = 255 # Read the input image image = cv2.imread('image.png') # Convert to HSV color space hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # Create masks for the two ranges of red hue mask1 = cv2.inRange(hsv, (H_MIN1, S_MIN, V_MIN), (H_MAX1, S_MAX, V_MAX)) mask2 = cv2.inRange(hsv, (H_MIN2, S_MIN, V_MIN), (H_MAX2, S_MAX, V_MAX)) # Combine the masks mask = cv2.bitwise_or(mask1, mask2) # Display the resulting mask cv2.imshow('Mask', mask) cv2.waitKey(0)
代替アプローチ: シアン検出
もう 1 つの効果的な方法は、BGR 画像を反転し、HSV に変換し、シアン色 (補色) を分離することです。赤まで)。これにより、複数の色相範囲をチェックする必要がなくなります。
シアン検出のコード:
# Invert the BGR image inverted = 255 - image # Convert to HSV color space hsv_inverted = cv2.cvtColor(inverted, cv2.COLOR_BGR2HSV) # Isolate cyan color cyan_mask = cv2.inRange(hsv_inverted, (90-10, S_MIN, V_MIN), (90+10, S_MAX, V_MAX)) # Display the cyan mask cv2.imshow('Cyan Mask', cyan_mask) cv2.waitKey(0)
以上がHSV 色空間を使用して OpenCV で赤色の検出を強化するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。