728x90
반응형
트랙바(Trackbar)
- 프로그램 동작 중 사용자가 지정한 범위 안의 값을 선택할 수 있는 컨트롤
- OpenCV에서 제공하는 (유일한?) 그래픽 사용자 인터페이스
트랙바 생성 함수
cv2.createTrackbar(trackbarName, windowName, value, count, onChange) -> None
- trackbarName: 트랙바 이름
- windowName: 트랙바를 생성할 창 이름.
- value: 트랙바 위치 초기값
- count: 트랙바 최대값 (최소값은 항상 0)
- onChange: 트랙바 위치가 변경될 때마다 호출할 콜백 함수 이름 트랙바 이벤트 콜백 함수는 다음 형식을 따름
onChange(pos) -> None
트랙바를 이용한 그레이스케일 레벨 표현
import numpy as np
import cv2
def on_level_change(pos):
value = pos * 16
if value >= 255:
value = 255
img[:] = value
cv2.imshow('image', img)
img = np.zeros((480, 640), np.uint8)
cv2.namedWindow('image')
cv2.createTrackbar('level', 'image', 0, 16, on_level_change)
cv2.imshow('image', img)
cv2.waitKey()
cv2.destroyAllWindows()
- 실행 결과:

주의할 점:
- cv2.createTrickBar 함수는 윈도우 창을 만들어 준 뒤 실행해야 함.
- value가 16*16=256 일 때 최대 픽셀값(255)을 벗어나 검은 화면이 나온다. value의 범위를 지정해주어야 함.
물론 아래와 같이 np.clip 함수로 최소 최대 지점 limit를 지정해주어도 된다.
def on_level_change(pos): # pos = 0~ 16
global img
value = pos * 16
value = np.clip(value, 0,255)
img[:,:] = value
cv2.imshow('image' ,img)728x90
반응형
'OpenCV' 카테고리의 다른 글
| OpenCV 영상처리 - 밝기 조절 (0) | 2024.03.18 |
|---|---|
| OpenCV 동영상 전환 이펙트 (0) | 2024.03.16 |
| OpenCV 연산 시간 측정(cv2.TickMeter) (0) | 2024.03.16 |
| OpenCV 키보드, 마우스 이벤트 처리 (0) | 2024.03.16 |
| OpenCV 카메라와 동영상 처리(cv2.VideoCapture, cv2.VideoWriter) (0) | 2024.03.15 |