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#-*- coding: utf-8 -*-
 2import cv2
 3import numpy as np
 4
 5def nothing(x):
 6    pass
 7
 8img = np.zeros((300,512,3), np.uint8)
 9cv2.namedWindow('image')
10
11# trackbar를 생성하여 named window에 등록
12cv2.createTrackbar('R', 'image', 0, 255, nothing)
13cv2.createTrackbar('G', 'image', 0, 255, nothing)
14cv2.createTrackbar('B', 'image', 0, 255, nothing)
15
16switch = '0:OFF\n1:On'
17cv2.createTrackbar(switch, 'image', 1, 1, nothing)
18
19while(1):
20    cv2.imshow('image', img)
21
22    if cv2.waitKey(1) & 0xFF == 27:
23        break
24
25    r = cv2.getTrackbarPos('R','image')
26    g = cv2.getTrackbarPos('G', 'image')
27    b = cv2.getTrackbarPos('B', 'image')
28    s = cv2.getTrackbarPos(switch, 'image')
29
30    if s == 0:
31        img[:] = 0 # 모든 행/열 좌표 값을 0으로 변경. 검은색
32    else:
33        img[:] = [b,g,r] # 모든 행/열 좌표값을 [b,g,r]로 변경
34
35cv2.destroyAllWindows()
../../_images/0.jpg