Python/파이썬 OpenCV 공부

[파이썬 OpenCV] 트랙바를 이용한 특정 색상 영역 추출 - cv2.inRange, cv2.createTrackbar

AI 꿈나무 2020. 9. 28. 18:54
반응형

황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다.

황선규 박사님의 'OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝'를 바탕으로 제작하였습니다.

 


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

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

 

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

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

 

[예제 코드]

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

if src is None:
    print('Image load failed!')
    sys.exit()
    
src_hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV) # BGR -> HSV 로 변경(색상 검출에 효율적)

# 트랙바 콜백 함수 생성
def on_trackbar(pos):
    hmin = cv2.getTrackbarPos('H_min', 'dst') # 트랙바의 위치를 받아옴 (h_min 값)
    hmax = cv2.getTrackbarPos('H_max', 'dst')
    
    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()

 

[결과]

 

 

 트랙바를 조정해서 원하는 H 범위를 설정할 수 있습니다.

 

반응형