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 중국어 웹사이트의 기타 관련 기사를 참조하세요!