import cv2
import numpy as np

트랙바 만들기

cv2.createTrackbar(trackbarName, windowName, value, count, onChange)

cv2.createTrackbar('B', 'color_palette', 0, 255, onChange)
이 함수는 트랙바를 지정된 윈도우에 생성하는 함수이다.
1. trackbarName : 트랙바 이름
2. windowName : 윈도우 이름
3. value : 트랙바 시작 값
4. count : 트랙바 끝 값
5. onChange : 트랙바 이벤트 발생시 수행되는 TrackbarCallback 콜백함수

TrackbarCallback :: def onChange(x)

createTrackbar 함수에서 마지막 인자로 들어갈 TrackbarCallback 함수에는 총 2가지 인자가 들어간다.
1. pos : 현재 트랙바의 위치 정보 

cv2.getTrackbarPos(trackbarname, winname) retval

b = cv2.getTrackbarPos('B', 'color_palette') 이 함수는 트랙바의 현재 위치를 반환하는 함수이다. 트랙바의 현재위치를 반환하여 변수에 초기화 해준다.
1. trackbarname : 트랙바 이름
2. winname : 윈도우 이름

트랙바를 설정할 때 중요한 것은 트랙바를 띄울 윈도우 이름과 이미지를 띄울 윈도우 이름이 동일해야 한다는 점, 그리고 트랙바의 위치를 반환하고자 할 때 앞서 설정한 트랙바의 이름이 동일해야 한다는 점이다.

def onChange(x):
    pass
def trackbar():
    img = np.full((200, 512, 3), 0, np.uint8)
    cv2.namedWindow('color_palette')
    
    cv2.createTrackbar('B', 'color_palette', 0, 255, onChange)
    cv2.createTrackbar('G', 'color_palette', 0, 255, onChange)
    cv2.createTrackbar('R', 'color_palette', 0, 255, onChange)
    
    switch = '0: OFF \n1: ON'
    cv2.createTrackbar(switch, 'color_palette', 0, 1, onChange)
    
    while(True):
        cv2.imshow('color_palette', img)
        k = cv2.waitKey(0) & 0xFF
        if k == 27:
            break
        
        b = cv2.getTrackbarPos('B', 'color_palette')
        g = cv2.getTrackbarPos('G', 'color_palette')
        r = cv2.getTrackbarPos('R', 'color_palette')
        s = cv2.getTrackbarPos(switch, 'color_palette')
        
        if s == 0:
            img[:] = 0
        else:
            img[:] = [b, g, r]
            
    cv2.destroyAllWindows()    
trackbar()

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기