Trackbar

Goal

  • trackbar와 OpenCV의 연동 방법에 대해서 알 수 있다.
  • cv2.getTrackbarPos() , cv2.createTrackbar() 함수에 대해서 알 수 있다.

Demo

Trackbar에 대해서는 간단한 Demo를 보면서 설명하겠습니다. Demo의 내용은 4개의 Tranckbar로 구성이 되어 있습니다. 3개는 RGB의 값을 표현하며, 나머지 하나는 초기화 하는 기능입니다.

Demo에서 사용하는 cv2.getTrackbarPos() , cv2.createTrackbar() 함수에 대해서 알아 보겠습니다.

cv2.createTrackbar(trackbarName, windowName, value, count, onChange)
Parameters:
  • trackbarName – trackbar Name
  • windowName – Named Window
  • value (int) – Trackbar가 생성될 때 초기 값
  • count – Tracbar의 Max값. Min값은 항상 0
  • onChange – Slide값이 변경될 때 호출 되는 Callback함수. 전달되는 Paramter는 trackbar Position
cv2.getTrackbarPos(trackbarName, windowName)
Parameters:
  • trackbarName – trackbar Name
  • windowName – Trackbar가 등록된 Named Window

Sample Code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#-*- coding: utf-8 -*-
import cv2
import numpy as np

def nothing(x):
    pass

img = np.zeros((300,512,3), np.uint8)
cv2.namedWindow('image')

# trackbar를 생성하여 named window에 등록
cv2.createTrackbar('R', 'image', 0, 255, nothing)
cv2.createTrackbar('G', 'image', 0, 255, nothing)
cv2.createTrackbar('B', 'image', 0, 255, nothing)

switch = '0:OFF\n1:On'
cv2.createTrackbar(switch, 'image', 1, 1, nothing)

while(1):
    cv2.imshow('image', img)

    if cv2.waitKey(1) & 0xFF == 27:
        break

    r = cv2.getTrackbarPos('R','image')
    g = cv2.getTrackbarPos('G', 'image')
    b = cv2.getTrackbarPos('B', 'image')
    s = cv2.getTrackbarPos(switch, 'image')

    if s == 0:
        img[:] = 0 # 모든 행/열 좌표 값을 0으로 변경. 검은색
    else:
        img[:] = [b,g,r] # 모든 행/열 좌표값을 [b,g,r]로 변경

cv2.destroyAllWindows()
../../_images/0.jpg