트랙바를 컬러 팔래트로 사용하기
1. 목표
- opencv 윈도우 상에 트랙바를 올리는 방법을 배워봅시다.
- 이번에는 cv2.getTrackbarPos(), cv2.createTrackbar() 등의 함수들을 배워보겠습니다.
2. 코드 데모
이번 시간에는 지정한 색상을 보여주는 간단한 어플을 만들어 보겠습니다. 우리가 만들 프로그램은 색상을 보여주고 3개의 BGR 컬러를 지정가능한 트랙바를 가진 윈도우를 만들고자 합니다. 트랙바를 슬라이드해서 이와 적합하도록 윈도우 색상이 변하게 될겁니다. 초기에는 검은색으로 초기화 시키도록 하겠습니다.
cv2.getTrackbarPos() 함수는 첫번째 매개변수로 트랙바 이름, 두번째는 이 트랙바가 부착될 윈도우 이름을 지정해주어야하고, 세번째 값으로는 디폴트 값, 네번째는 최대 값, 다섯번째는 트랙바가 변할떄마다 실행될 콜백 함수를 지정해주어야 합니다. 콜백 함수는 트랙바 위치 값을 디폴트 매개변수로 사용하게 됩니다. 하지만 이 케이스에서는 콜백 함수를 사용하지않으므로 단순히 pass 하도록 만들겠습니다.
이 어플리케이션에서 다른 중요한 요소중 하나는 버튼(스위치)를 사용하는 것입니다. opencv에선 기능적으로 버튼을 제공하고 있지는 않지만 트랙바를 이용해서 스위치 같은 역활을 하도록 만들겠습니다. 여기서 스위치를 만들어, 스위치가 on이 되어있는 동안 어플이 동작하게 될거고, 그렇지 않으면 스크린이 항상 검은색이 되도록 하겠습니다.
import cv2
import numpy as np
def nothing(x):
pass
#이름이 image인 검은 윈도우를 생성하겠습니다.
img = np.zeros((300, 513, 3), np.uint8)
cv2.namedWindow("image")
# 색사이 바뀌도록 하는 트랙바를 생성해봅시다.
cv2.createTrackbar("R", "image", 0, 255, nothing)
cv2.createTrackbar("G", "image", 0, 255, nothing)
cv2.createTrackbar("B", "image", 0, 255, nothing)
# on/off를하는 스위치를 만들어봅시다.
switch = "0 : OFF \n 1 : ON"
cv2.createTrackbar(switch, "image", 0, 1, nothing)
while (1):
cv2.imshow("image", img)
k = cv2.waitKey(1) & 0xFF
if k == 27:
break
# 트랙바값 읽기
r = cv2.getTrackbarPos("R", "image")
g = cv2.getTrackbarPos("G", "image")
b = cv2.getTrackbarPos("B", "image")
s = cv2.getTrackbarPos(switch, "image")
# 스위치가 OFF이면 검은화면으로, On이면 색상 띄우기
if s == 0:
img[:] = 0
else:
img[:] = [b,g,r]
cv2.destroyAllWindows()
파일명 : 04_trackbar.py
'로봇 > 영상' 카테고리의 다른 글
opencv-python 튜토리얼 - 8. 이미지 기하학적 변환 (0) | 2020.08.13 |
---|---|
opencv-python 튜토리얼 - 7. 이미지 기본 연산 다루기 (0) | 2020.08.10 |
opencv-python 튜토리얼 - 5. 마우스를 패인트 브러쉬로 사용하기 (0) | 2020.08.10 |
opencv-python 튜토리얼 - 4. 그리기 함수 사용하기 (0) | 2020.08.10 |
opencv-python 튜토리얼 - 3. 호랑나비 돌려보기 (0) | 2020.08.10 |