>백엔드 개발 >C++ >HSV 색상 공간을 사용하여 OpenCV에서 빨간색 감지를 어떻게 향상시킬 수 있습니까?

HSV 색상 공간을 사용하여 OpenCV에서 빨간색 감지를 어떻게 향상시킬 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-12 05:06:02777검색

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으로 문의하세요.