ホームページ >バックエンド開発 >Python チュートリアル >cv::inRange を使用してオブジェクト検出のための HSV カラー境界を効果的に決定する方法

cv::inRange を使用してオブジェクト検出のための HSV カラー境界を効果的に決定する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-02 01:56:09531ブラウズ

How to Effectively Determine HSV Color Boundaries for Object Detection using cv::inRange?

cv::inRange (OpenCV) を使用したオブジェクト検出の色の境界の選択

色の検出に cv::inRange 関数を利用する場合、適切な HSV の上限と下限を選択することが重要です。この記事では、関心のある特定の色に基づいてこれらの境界を効果的に決定する方法について説明します。

背景

HSV (色相、彩度、値) は色の 1 つです。画像処理でよく使われる空間。 HSV モデルは、色を 3 つの要素として表します。

  • 色相 (H): 色合い (赤、青など) を表します。
  • 彩度 (S): 色の量を測定します。シェード内に存在する色 (0 ~ 1)。
  • 値 (V): 色の明るさを表します。 (0-255).

境界の選択

適切な HSV 境界の決定は、検出される特定の色に基づいて行われます。以下はステップバイステップのガイドです:

  1. 色相の決定:

    • カラー ピッカー ツールを使用して、色相の HSV 値を特定します。
    • HSV 値には異なるスケールが使用される場合があることに注意してください。
  2. 色相範囲の調整:

    • 識別された値の周囲の範囲を調整することで、色相のわずかな変化を考慮します。 .
    • たとえば、色相が 22 (179 のうち) の場合、範囲は(11-33) が適切である可能性があります。
  3. 彩度と値の範囲を設定します:

    • 適切な範囲を使用します。彩度 (例: 50-255)。
    • の場合値を指定するには、オブジェクトの予想される明るさを含む範囲を選択します。
  4. 形式を検討します:

    • HSV 変換は、画像形式に適しています。
    • たとえば、OpenCV は、RGB ではなく BGR を使用します。画像表現。

画像内のオレンジ色の蓋を検出する例を考えてみましょう。

  1. HSV値:

    • カラーピッカーを使用して、(22, 59, 100) の HSV 値を取得します。
  2. 調整済み境界:

    • 色相範囲: (11-33)
    • 彩度範囲: (50-255)
    • 値範囲: (50-255)
  3. Python コード:

    import cv2
    import numpy as np
    
    ORANGE_MIN = np.array([11, 50, 50], np.uint8)
    ORANGE_MAX = np.array([33, 255, 255], np.uint8)
    
    # Read and convert image
    img = cv2.imread('image.png')
    hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    
    # Detect orange using inRange
    mask = cv2.inRange(hsv_img, ORANGE_MIN, ORANGE_MAX)
    # Display mask
    cv2.imshow('Mask', mask)
    cv2.waitKey(0)

以上がcv::inRange を使用してオブジェクト検出のための HSV カラー境界を効果的に決定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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