Language - Python(Opencv)

Python Opencv - #15, 특정 색상 추출 (trackbar 응용)

KimTory 2021. 11. 22. 22:41

▶ 트랙바를 이용한 특정 색상 영역 추출

 HSV 색 공간의 H의 범위를 트랙바로 조정하여 원하는 색 검출을 용이하게 할 수 있습니다.

 

 트랙바 만드는 법과 트랙바 생성 함수는 여기에서 확인할 수 있습니다.

 색상 영역 검출 하는 방법은 여기에서 확인할 수 있습니다. 

 

[예제 코드]

src = cv2.imread('candies.png')

if src is None:
    print('Image load failed!')
    sys.exit()
    
# BGR -> HSV 로 변경 (정확성, 효율성면에서 BGR 방식보단 HSV가 효과적임)
src_hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV) 

# 트랙바 콜백 함수 생성
def on_trackbar(pos):
    hmin = cv2.getTrackbarPos('H_min', 'dst') # 트랙바의 위치를 받아옴 (h_min 값)
    hmax = cv2.getTrackbarPos('H_max', 'dst')
    
    # inrange(image, low, upper)
    dst = cv2.inRange(src_hsv, (hmin, 150, 0), (hmax, 255, 255))
    cv2.imshow('dst', dst)
    
cv2.imshow('src', src)
cv2.namedWindow('dst')

# 트랙바 콜백 함수 등록
cv2.createTrackbar('H_min', 'dst', 50, 179, on_trackbar)
cv2.createTrackbar('H_max', 'dst', 80, 179, on_trackbar)
on_trackbar(0)

cv2.waitKey()

cv2.destroyAllWindows()

 

[결과]

-. User가 tackbar 조정하여 찾고자 하는 H 범위를 찾을 수 있다.

 

 

-. H.S.V에 대한 설명

https://ko.wikipedia.org/wiki/HSV_%EC%83%89_%EA%B3%B5%EA%B0%84

 

HSV 색 공간 - 위키백과, 우리 모두의 백과사전

HSV 색 공간 또는 HSV 모델은 색을 표현하는 하나의 방법이자, 그 방법에 따라 색을 배치하는 방식이다. 색상(Hue), 채도(Saturation), 명도(Value)의 좌표를 써서 특정한 색을 지정한다. 비슷한 것으로 HSL

ko.wikipedia.org