2-9. 트랙바 사용하기

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_R(pos):
    value = pos * 16
    if value >= 255:
        value = 255

    img[:,:,2] = value
    cv2.imshow('image', img)

def on_level_change_G(pos):
    value = pos * 16
    if value >= 255:
        value = 255

    img[:,:,1] = value
    cv2.imshow('image', img)

def on_level_change_B(pos):
    value = pos * 16
    if value >= 255:
        value = 255

    img[:,:,0] = value
    cv2.imshow('image', img)

# 480x640의 컬러 영상 만들기
img = np.zeros((480, 640, 3), np.uint8)
# OpenCV 창 만들기
cv2.namedWindow('image')
# RGB별 트랙바 생성
cv2.createTrackbar('level_R', 'image', 0, 16, on_level_change_R)
cv2.createTrackbar('level_G', 'image', 0, 16, on_level_change_G)
cv2.createTrackbar('level_B', 'image', 0, 16, on_level_change_B)
# 트랙바 움직임에 따른 창 업데이트
cv2.imshow('image', img)
# 아무 키나 눌러 종료 기다리기
cv2.waitKey()
# 창 닫기
cv2.destroyAllWindows()

    아래 동영상은 코드 테스트 결과. 이것도 재밌었다. 

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.


2-10. 연산 시간 측정 방법

cv2.TickMeter() -> tm

    컴퓨터 비전은 대용량 데이터를 사용해 일련의 과정을 거처 최종 결과를 얻기 때문에 병목 현상이 일어나는 구간이나 최적화 구간을 찾기 위해 매 단계 연산 시간을 측정하여 관리 해야할 필요가 있다. 

    OpenCV에서 제공하는 TickMeter 클래스를 이용하면 연산 시간 측정이 가능하다.

    tm은 cv2.TickMeter 객체로써 아래 표에 이 클래스 내 시간 측정에 사용할 함수를 정리해 두었다.

함수 설명
tm.start() 시간 측정 시작
tm.stop() 시간 측정 끝
tm.reset() 시간 측정 초기화
tm.getTimeSec() 측정 시간을 s (sec) 단위로 반환
tm.getTimeMilli() 측정 시간을 ms (mili sec) 단위로 변환
tm.getTimeMicro() 측정 시간을 us (micro sec) 단위로 변환

     강의 예제로는 이미지를 불러와서 Canny 함수 처리가 얼마나 걸리는지 측정해보는 코드가 제공되었다. 글쓴이 컴퓨터 기준 첫 실행에서  76.3578ms 가 기록되었다. 이미지가 더 큰 파일을 테스트 해본다던가 아니면 같은 이미지로 여러번 Canny 함수 처리 해 평균 값을 봐야 더 정확한 테스트 벤치를 만들어 볼 수 있을 거 같다.

강의 예제 첫 실행 기록


 

인증 타임

마우스에 이어서 트랙바도 처음 써본 python GUI라 좀 신기했다. 기존 예제는 그레이스케일 영상을 만드는 것이 였는데 코드를 수정해서 컬러 영상 출력으로 바꾸어 보았다. 간단하게 수정한거라 같은 내용을 반복하는 함수를 여러 개 만든 느낌이라 신경써서 작성했다면 하나의 콜백 함수로 전부 처리 하는 방식을 고민해 보았을거 같다. 연산 측정의 경우 다른 언어에서는 다른 클래스 함수로 써보았는데 python-OpenCV 클래스 함수는 처음이라 흥미로웠다. 이 후 만들어지는 코드들 연산 시간 측정 내용도 추가해서 지켜 보는 것도 흥미로울 거 같다. 

2-9. 공부 인증 사진
2-10. 공부 인증 사진


#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online

 

패스트캠퍼스(FastCampus) 강의 둘러보러 가기 

   

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.


 

+ Recent posts