무효 클릭 IP 추적 중...
머신러닝,딥러닝/opencv

[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자)

꼬예 2022. 9. 14.

 

 

이번 포스팅에서는 아래와 같이 파이썬 opencv에서 제공하는 gui인 트랙바를 만드는 방법에 대해 알아보겠습니다.

 

트랙바 시연예시

 

1) 트랙바 디폴트 배경 설정

우선 트랙바 배경으로 검은 화면을 설정하고 싶은데요!

 

아래와 같은 코드로 검은 배경을 만들어보았습니다.

 

배경코드

 

output:

 

배경출력

 

2) 트랙바 생성(cv2.createTrackbar)

 

 

트랙바를 생성하는데 사용되는 함수는 createTrackbar 입니다.

 

<2번째인자>

두번째 인자에 들어간 'image'는 트랙바를 띄울 창 이름을 의미합니다.

다시 말하면 트랙바를 생성하기 위해선 창을 먼저 생성해야 된다는 의미죠.

 

즉 아래와 같이 imshow()를 먼저 실행해서 창을 생성한 후 트랙바를 생성하는 방식으로 진행이 됩니다.

 

 

당연히 같은 창을 공유 해야하니까 둘다 'image'라는 같은 이름의 창을 공유하는걸 알 수 있죠.

 

만약 아래와 같이 창을 생성하기 전에 트랙바를 생성하려고하면,

 

 

NULL window: 'image' in function 'icvCreateTrackbar’ 에러가 발생할것입니다.

 

<1번째인자>

다음으로 일단 트랙바를 띄워보겠습니다.

 

 

그러면 빨간색 사각형 부분에 level이라고 적혀있는데요.

이 부분이 createTrackbar 함수 첫번째 인자에 들어가는 값입니다.

 

<3번째인자>

 

세번째인자

 

세번째 인자에는 처음 트랙바를 띄울때 디폴트로 위치할 값을 의미합니다.

 

 

보시는것처럼 파란색 바0을 가리키고 있는 것을 알 수 있습니다.

 

<4번째인자>

 

 

네번째 인자는 트랙바로 움직일 수 있는 최대값을 의미합니다.

최소값 같은 경우 0으로 고정되어있기 때문에 사용자가 임의로 수정할 수 없습니다.

 

우리예시에서 16이라고 적었으니까  0~ 16이 사용 가능 범위 입니다.

 

<5번째인자>

다섯번째 인자에는 콜백함수를 넣어주는 자리입니다.

즉 트랙바를 움직일때마다 자동으로 실행시켜주는 함수를 의미하는데요.

 

함수는 우리가 임의로 생성해주면됩니다.

단 opencv에서 정해준 규칙이 있는데요.

그것은 하나의 인자를 받도록 세팅해야 된다는 것입니다.

 

 

on_trackbar라는 이름으로 하나의 인자를 받는 함수를 만들어 봤습니다.

인자로 넘어오는 값이 어떤녀석인지 확인하기 위해 type과 인자를 print하는 코드를 작성해보았는데요.

 

인자값 확인

 

트랙바를 움직일때마다 함수가 작동되고, 인자값으로 int타입의 값이 들어오는걸 알 수 있습니다.

 

 

앞서 배운 내용을 토대로 밝기를 조절하는 트랙바를 만들어보겠습니다.

 

3) 예시코드 작성

 

 

# 전체코드

img = np.zeros((500, 500), np.uint8)


def on_trackbar(pos):
    img[:,:] = pos * 20
    cv2.imshow('image',img)

cv2.imshow('image',img)
cv2.createTrackbar('level', 'image', 0, 16, on_trackbar)

cv2.waitKey()
cv2.destroyAllWindows()
  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글