1.HSV(Hue, Saturation, Value)
색상(Hue) 0°: 빨강 60°: 노랑 120°: 초록 180°: 청록 240°: 파랑 300°: 보라
채도(Saturation) 0%: 완전히 무채색(회색) 100%: 가장 선명한 색
명도(Value) 0%: 완전한 검정 100%: 가장 밝은 색
BGR에서 HSV로 변경
img = cv2.resize(img, dsize=(width//4, height//4), interpolation=cv2.INTER_AREA)
img2 = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
HSV 분리
#HSV 변경
img2 = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
#HSV 분리
imgh, imgs, imgv = cv2.split(img2)
cv2.imshow('titleH', imgh)
cv2.imshow('titleS', imgs)
cv2.imshow('titleV', imgv)
특정 색분리
# 파란영역 검출
h = cv2.inRange(imgh, 100, 140) # 파란색 영역 검출
blue = cv2.bitwise_and(img2, img2, mask=h) # 파란색 영역 마스크 적용
blue = cv2.cvtColor(blue, cv2.COLOR_HSV2BGR) # HSV를 BGR로 변환
cv2.imshow('titleBlue', blue)
여러색분리(병합)
# 파란영역 검출
lower_blue = np.array([100, 50, 50]) # 파란색의 낮은 범위
upper_blue = np.array([140, 255, 255]) # 파란색의 높은 범위
blueH = cv2.inRange(img2, lower_blue, upper_blue) # 파란색 영역 검출
# 하얀영역 검출
lower_white = np.array([0, 0, 200]) # 하얀색의 낮은 범위
upper_white = np.array([180, 50, 255]) # 하얀색의 높은 범위
whiteH= cv2.inRange(img2, lower_white, upper_white)
BlueAndWhiteH=cv2.addWeighted(blueH, 1.0, whiteH, 1.0, 0.0)
BlueAndWhite = cv2.bitwise_and(img2, img2, mask=BlueAndWhiteH) # 파란색 영역 마스크 적용
BlueAndWhite = cv2.cvtColor(BlueAndWhite, cv2.COLOR_HSV2BGR) # HSV를 BGR로 변환
cv2.imshow('titleBlueAndWhite', BlueAndWhite)
병합
img2_merged = cv2.merge((imgh, imgs, imgv))
img2_merged = cv2.cvtColor(img2_merged, cv2.COLOR_HSV2BGR)
cv2.imshow('titleMerge', img2_merged)
'AI' 카테고리의 다른 글
[OpenCV] 영상 캡쳐,녹화 (0) | 2025.01.18 |
---|---|
[OpenCV] OpenCV 함수1 (0) | 2025.01.17 |
[OpenCV] OpenCV(Open Source Computer Vision Library)란? (0) | 2025.01.17 |