ホームページ  >  記事  >  バックエンド開発  >  HSV 色空間を使用して OpenCV で赤色の検出を強化するにはどうすればよいでしょうか?

HSV 色空間を使用して OpenCV で赤色の検出を強化するにはどうすればよいでしょうか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-12 05:06:02722ブラウズ

How can we enhance red color detection in OpenCV using HSV color space?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。