이번 포스팅에서는 아래와 같이 파이썬 opencv에서 제공하는 gui인 트랙바를 만드는 방법에 대해 알아보겠습니다.
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) 트랙바 시연예시](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
1) 트랙바 디폴트 배경 설정
우선 트랙바 배경으로 검은 화면을 설정하고 싶은데요!
아래와 같은 코드로 검은 배경을 만들어보았습니다.
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 1) 트랙바 디폴트 배경 설정 배경코드](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
output:
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 1) 트랙바 디폴트 배경 설정 배경출력](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
2) 트랙바 생성(cv2.createTrackbar)
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar) [오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar)](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
트랙바를 생성하는데 사용되는 함수는 createTrackbar 입니다.
<2번째인자>
두번째 인자에 들어간 'image'는 트랙바를 띄울 창 이름을 의미합니다.
다시 말하면 트랙바를 생성하기 위해선 창을 먼저 생성해야 된다는 의미죠.
즉 아래와 같이 imshow()를 먼저 실행해서 창을 생성한 후 트랙바를 생성하는 방식으로 진행이 됩니다.
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar) [오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar)](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
당연히 같은 창을 공유 해야하니까 둘다 'image'라는 같은 이름의 창을 공유하는걸 알 수 있죠.
만약 아래와 같이 창을 생성하기 전에 트랙바를 생성하려고하면,
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar) [오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar)](https://blog.kakaocdn.net/dn/bybau2/btrLYkNfYt0/1UmjHXkZkope8R6O0sXKFK/img.png)
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar) [오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar)](https://blog.kakaocdn.net/dn/nb2f7/btrL5c7EIo5/oLWWvAJHAdg4Qx5kdrVUk1/img.png)
NULL window: 'image' in function 'icvCreateTrackbar’ 에러가 발생할것입니다.
<1번째인자>
다음으로 일단 트랙바를 띄워보겠습니다.
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar) [오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar)](https://blog.kakaocdn.net/dn/cqYol1/btrL4kZhdPD/JhH0Idg7bnCouXjgPnQrf0/img.png)
그러면 빨간색 사각형 부분에 level이라고 적혀있는데요.
이 부분이 createTrackbar 함수 첫번째 인자에 들어가는 값입니다.
<3번째인자>
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar) 세번째인자](https://blog.kakaocdn.net/dn/bUfXX4/btrLZAbmQgO/ENyZ2st6tUeEXTCZjmdKHk/img.png)
세번째 인자에는 처음 트랙바를 띄울때 디폴트로 위치할 값을 의미합니다.
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar) [오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar)](https://blog.kakaocdn.net/dn/QZYdv/btrL1zpDA57/XXWKIp2mgFIunxKKhczq41/img.png)
보시는것처럼 파란색 바가 0을 가리키고 있는 것을 알 수 있습니다.
<4번째인자>
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar) [오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar)](https://blog.kakaocdn.net/dn/cdEyiT/btrL23YhpCq/rKpiw5vALR5q7EJZ6gIslk/img.png)
네번째 인자는 트랙바로 움직일 수 있는 최대값을 의미합니다.
최소값 같은 경우 0으로 고정되어있기 때문에 사용자가 임의로 수정할 수 없습니다.
우리예시에서 16이라고 적었으니까 0~ 16이 사용 가능 범위 입니다.
<5번째인자>
다섯번째 인자에는 콜백함수를 넣어주는 자리입니다.
즉 트랙바를 움직일때마다 자동으로 실행시켜주는 함수를 의미하는데요.
함수는 우리가 임의로 생성해주면됩니다.
단 opencv에서 정해준 규칙이 있는데요.
그것은 하나의 인자를 받도록 세팅해야 된다는 것입니다.
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar) [오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar)](https://blog.kakaocdn.net/dn/bv83Ir/btrL23KOJhv/XdxUGTAm42Bn9192A2Pbw0/img.png)
on_trackbar라는 이름으로 하나의 인자를 받는 함수를 만들어 봤습니다.
인자로 넘어오는 값이 어떤녀석인지 확인하기 위해 type과 인자를 print하는 코드를 작성해보았는데요.
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 2) 트랙바 생성(cv2.createTrackbar) 인자값 확인](https://blog.kakaocdn.net/dn/vCuyJ/btrL2nWWRvF/AESB8kQBMkg9NQInxok7ZK/img.webp)
트랙바를 움직일때마다 함수가 작동되고, 인자값으로 int타입의 값이 들어오는걸 알 수 있습니다.
앞서 배운 내용을 토대로 밝기를 조절하는 트랙바를 만들어보겠습니다.
3) 예시코드 작성
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 3) 예시코드 작성 [오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 3) 예시코드 작성](https://blog.kakaocdn.net/dn/cMbu1e/btrL1yxsM2n/FUNBpVvgrZhwASo6bkUyx1/img.png)
![[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 3) 예시코드 작성 [오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) - undefined - 3) 예시코드 작성](https://blog.kakaocdn.net/dn/cp0w6l/btrL4BTOC15/Xa9JKs5U0QnwRjXNee4daK/img.webp)
# 전체코드
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()
'머신러닝,딥러닝 > opencv' 카테고리의 다른 글
[파이썬 opencv] 오픈 cv에서 yolov3 사용하는 방법 (2) | 2022.10.26 |
---|---|
[파이썬 opencv] 오픈 cv에서 detection model 실행하는 방법 (0) | 2022.10.21 |
[파이썬 opencv] 두 이미지 합치는 방법(with 크기 다른 이미지) (0) | 2022.09.13 |
[opencv] 그림 그리기 | 글자 쓰는 법 (+ 한글 사용 방법) (0) | 2022.09.06 |
[오픈 cv python] 이미지 읽기(cv2.imread) | 컬러 , 흑백 (0) | 2022.08.30 |
댓글
꼬예님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.