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()