首頁  >  文章  >  後端開發  >  我們如何使用 HSV 色彩空間增強 OpenCV 中的紅色偵測?

我們如何使用 HSV 色彩空間增強 OpenCV 中的紅色偵測?

Patricia Arquette
Patricia Arquette原創
2024-11-12 05:06:02679瀏覽

How can we enhance red color detection in OpenCV using HSV color space?

使用HSV 顏色空間在OpenCV 中增強紅色檢測

本文旨在提高使用OpenCV 的HSV 影像中紅色檢測的準確性顏色空間。

問題:

使用 cv::inRange 和 HSV 顏色空間檢測影像中的紅色矩形目前產生的結果不令人滿意。期望的結果是有效地隔離紅色矩形。

解:

在 HSV 中,紅色跨越值 180 周圍的範圍。這樣,HSV 範圍應包含 [0,10] 和 [170, 180] 中的值。

程式碼更新:

以下程式碼片段示範了更新後的程式碼方法:

# Include OpenCV library
import cv2

# Define HSV range for red color
H_MIN1 = 0
H_MAX1 = 10
H_MIN2 = 170
H_MAX2 = 180
S_MIN = 70
S_MAX = 255
V_MIN = 50
V_MAX = 255

# Read the input image
image = cv2.imread('image.png')

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

# Create masks for the two ranges of red hue
mask1 = cv2.inRange(hsv, (H_MIN1, S_MIN, V_MIN), (H_MAX1, S_MAX, V_MAX))
mask2 = cv2.inRange(hsv, (H_MIN2, S_MIN, V_MIN), (H_MAX2, S_MAX, V_MAX))

# Combine the masks
mask = cv2.bitwise_or(mask1, mask2)

# Display the resulting mask
cv2.imshow('Mask', mask)
cv2.waitKey(0)

替代方法:青色偵測

另一個有效的方法是反轉BGR 影像,將其轉換為HSV,並隔離青色(互補色)為紅色)。這樣就無需檢查多個色調範圍。

青色偵測程式碼:

# Invert the BGR image
inverted = 255 - image

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

# Isolate cyan color
cyan_mask = cv2.inRange(hsv_inverted, (90-10, S_MIN, V_MIN), (90+10, S_MAX, V_MAX))

# Display the cyan mask
cv2.imshow('Cyan Mask', cyan_mask)
cv2.waitKey(0)

以上是我們如何使用 HSV 色彩空間增強 OpenCV 中的紅色偵測?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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