ホームページ > バックエンド開発 > C++ > HSV 色空間を使用して OpenCV でより正確な赤色検出を実現するにはどうすればよいですか?

HSV 色空間を使用して OpenCV でより正確な赤色検出を実現するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-22 08:53:10
オリジナル
317 人が閲覧しました

How can I achieve more precise red color detection in OpenCV using HSV color space?

HSV 色空間を使用した OpenCV での赤色検出の改善

OpenCV では、HSV 色空間は特定の色を検出するための効果的なアプローチを提供します。赤も含めて。ただし、HSV の色相チャネルの円形の性質により、赤色が 180 度近くの値を囲む可能性があります。これにより、赤いオブジェクトを正確に検出する際に課題が生じる可能性があります。

この問題に対処するには、色相コンポーネントの 2 つの範囲 [0,10] と [170, 180] を考慮することで、より正確な検出を実現できます。両方の範囲を含めることで、赤色スペクトル全体を確実に検出できるようになります。

次の Python コードは、このアプローチを示しています。

import cv2

# Read the input image
image = cv2.imread("path_to_image")

# Convert BGR to HSV color space
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# Define HSV values for red color
hue_min1 = 0
hue_max1 = 10
hue_min2 = 170
hue_max2 = 180
sat_min = 70
sat_max = 255
val_min = 50
val_max = 255

# Create masks for the two hue ranges
mask1 = cv2.inRange(hsv, (hue_min1, sat_min, val_min), (hue_max1, sat_max, val_max))
mask2 = cv2.inRange(hsv, (hue_min2, sat_min, val_min), (hue_max2, sat_max, val_max))

# Combine the masks
mask = mask1 | mask2

# Display the mask
cv2.imshow("Mask", mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
ログイン後にコピー

このコードは、画像内の赤い四角形を効果的に検出します。マスク出力に示されているように。

代替アプローチ

別の方法は、BGR 画像を反転してから HSV に変換することです。このアプローチは基本的に補色であるシアン (色相チャネルで 90 度) を検索し、単一の範囲で赤を検出できるようにします。

次の Python コードは、この手法を示しています。

import cv2

# Read the input image
image = cv2.imread("path_to_image")

# Invert the BGR image
inverted_image = cv2.bitwise_not(image)

# Convert inverted image to HSV color space
hsv_inverted = cv2.cvtColor(inverted_image, cv2.COLOR_BGR2HSV)

# Define HSV values for cyan color (inverted red)
hue_min = 90 - 10
hue_max = 90 + 10
sat_min = 70
sat_max = 255
val_min = 50
val_max = 255

# Create a mask for the cyan color range
mask = cv2.inRange(hsv_inverted, (hue_min, sat_min, val_min), (hue_max, sat_max, val_max))

# Display the mask
cv2.imshow("Mask", mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
ログイン後にコピー

どちらのアプローチも、HSV 色空間で OpenCV を使用して赤色検出を改善し、画像処理アプリケーションにより正確な結果を提供します。

以上がHSV 色空間を使用して OpenCV でより正確な赤色検出を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート