首頁 >後端開發 >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(色相、飽和度、值)是一種顏色影像處理中常用的空間。 HSV 模型將顏色表示為三個組成部分:

  • 色調 (H):表示顏色深淺(例如紅色、藍色)。
  • 飽和度 (S):測量顏色的量陰影中存在的顏色 (0-1)。
  • 值(V):代表顏色的亮度(0-255).

選擇邊界

根據偵測到的特定顏色確定正確的HSV 邊界。以下是逐步指南:

  1. 確定色調:

    • 使用顏色選擇器工具識別以下顏色的HSV 值感興趣的對象。
    • 請注意,依照不同的情況,HSV數值可能會使用不同的比例
  2. 調整色調範圍:

    • 透過調整辨識值周圍的範圍來考慮色調的細微變化.
    • 例如,如果色調為22(滿分179),則範圍為(11-33) 可能是適當的。
  3. 設定飽和度和值範圍:

    • 使用合理的範圍飽和度(例如 50-255)。
    • 對於數值,請選擇一個範圍其中包含物件的預期亮度。
  4. 考慮格式:

    • 確保 HSV 轉換適合你的影像格式。
    • 例如,OpenCV 使用BGR,而不是RGB 影像

範例

讓我們考慮一下偵測影像中橙色蓋子的範例。

  1. 單純皰疹病毒值:

    • 使用顏色選擇器,我們得到 HSV 值 (22, 59, 100)。
  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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn