ホームページ >バックエンド開発 >Python チュートリアル >cv2.inRange を使用して OpenCV で色検出のための HSV 境界を正確に決定する方法は?

cv2.inRange を使用して OpenCV で色検出のための HSV 境界を正確に決定する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-16 06:44:09768ブラウズ

How to Accurately Determine HSV Boundaries for Color Detection in OpenCV using cv2.inRange?

OpenCV の cv2.inRange を使用した色検出のための HSV 境界の決定

OpenCV で色の検出に cv2.inRange 関数を使用する場合、正確に識別するには、適切な HSV (色相、彩度、値) の上限と下限を選択することが重要です。ターゲットの色。

問題の特定:

次に示すように、オレンジ色の蓋が付いたコーヒー缶を含む画像の例を考えてみましょう。

[オレンジ色の蓋が付いたコーヒー缶の画像]

目的は、HSV 境界を決定してオレンジ色の蓋を分離することです。最初は、(18, 40, 90) ~ (27, 255, 255) の範囲が試行されましたが、予期しない結果が生じました。

解決策 1: スケール変換

アプリケーションごとに HSV 値のスケールが異なる場合があることに注意することが重要です。 OpenCV は H: 0 ~ 179、S: 0 ~ 255、V: 0 ~ 255 のスケールを使用しますが、他の一部のアプリケーションでは H: 0 ~ 360、S: 0 ~ 100、V: 0 ~ 100 のスケールを使用する場合があります。したがって、それに応じて HSV 値を変換する必要があります。

解決策 2: カラー スペース変換

OpenCV は、次の BGR (青、緑、赤) カラー形式を使用します。デフォルトですが、画像は RGB (赤、緑、青) 形式である場合があります。画像を HSV に正しく変換するには、cv2.COLOR_RGB2HSV の代わりに cv2.COLOR_BGR2HSV を使用することが不可欠です。

改訂されたコード:

import cv2
import numpy as np

image = cv2.imread('kaffee.png')

# Revised HSV boundaries considering scale conversion
ORANGE_MIN = np.array([5, 50, 50], np.uint8)
ORANGE_MAX = np.array([15, 255, 255], np.uint8)

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

# Apply color filtering
mask = cv2.inRange(hsv, ORANGE_MIN, ORANGE_MAX)

# Save the masked image
cv2.imwrite('kaffee_out.png', mask)

この改訂されたアプローチは、コーヒー缶のオレンジ色の蓋を分離する際に、より正確な結果が得られます。

以上がcv2.inRange を使用して OpenCV で色検出のための HSV 境界を正確に決定する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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