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