- 트랙바(Trackbar) = 프로그램 동작 중 사용자가 지정한 범위 안의 값을 선택할 수 있는 컨트롤러.
트랙바는 OpenCV에서 제공하는 거의 유일한 그래픽 사용자 인터페이스입니다.
8-(1) 트랙바를 이용한 밝기 조절
Import Library
import numpy as np
import cv2
Create Trackbar Gnerating Function
def on_level_change(pos):
value = pos * 16
if value >= 255:
value = 255
img[:] = value
cv2.imshow('image', img)
- 나중에 만들어질 트랙바의 값 위치가 달라질 때마다 호출되는 on_level_change() 콜백 함수를 정의합니다.
- on_level_change() 함수의 인자인 pos는 트랙바의 값 위치에 해당하는 값을 의미합니다.
- value = 트랙바 값 위치에 따른 영상 밝기 값. (ex. 트랙바 위치가 3일때 value는 3*16입니다.)
- 나중에 만들어질 트랙바는 0~16단계로 설정할텐데 이때 최고 단계인 16단계는 pos가 16인 경우로 value값은 256이 됩니다. 영상의 최대 밝기는 255이므로 이를 맞추기 위해서 다음과 같은 조건문을 작성합니다.
- 만약 value가 255 이상일때 value는 255로 고정시킵니다.
- img 영상의 전체의 밝기를 트랙바에 의해 조절하므로 img[:]를 value값으로 저장합니다.
- 'image'라는 영상창에 img를 보여줍니다.
Create Image
img = np.zeros((480, 640), np.uint8)
cv2.namedWindow('image')
- img = 세로 480 픽셀, 가로 640 픽셀의 밝기가 제일 어두운 제로 행렬 영상.
- 'image'라는 영상창을 띄웁니다.
Create createTrackbar Function
cv2.createTrackbar('level', 'image', 0, 16, on_level_change)
- createTrackbar() 함수는 다음과 같은 인자를 받으며 트랙바를 생성합니다.
- 트랙바의 이름은 'level'이고, 트랙바는 'image' 영상창에 생성하며 최소값은 0, 최대값은 16으로 총 16단계로 생성합니다. 그리고 트랙바의 위치값에 따른 영상 처리는 on_level_change() 콜백 함수를 불러와 처리합니다.
Print Image
cv2.imshow('image', img)
cv2.waitKey()
cv2.destroyAllWindows()
8-(2) 연산 시간 측정
컴퓨터 비전은 대용량 데이터를 다루고, 일련의 과정을 통해 최종 결과를 얻으므로 매 단계에서 연산 시간을 측정하여 관리할 필요가 있습니다.
Upload Image
from google.colab import files
upload = files.upload()
Saving hongkong.jpg to hongkong.jpg
Import Library
import sys
import time
import numpy as np
import cv2
- 필요한 라이브러리들을 불러옵니다.
Create TickMeter Object
tm = cv2.TickMeter()
- tm = TicjMeter()의 객체.
Measure Time
tm.reset()
tm.start()
t1 = time.time()
edge = cv2.Canny(img, 50, 150)
t2 = time.time()
tm.stop()
- OpenCV에서 제공하는 연산 시간 측정 클래스와 파이썬에서 기본으로 제공하는 time 모듈의 메소드를 이용하여 각각 시간을 측정해봅니다.
- 연산 시간을 측정할 때 측정하고자 하는 연산의 앞,뒤에 시각을 측정하는 코드를 적고, 앞,뒤 시각의 차이를 계산하는 방식으로 처리합니다.
- 시각을 초기화하고 연산 전에 시각을 측정합니다.
- 영상의 엣지를 검출하는 연산을 수행합니다.
- 연산 후의 시각을 측정합니다.
Print Measure Result
print('time:', (t2 - t1) * 1000)
print('Elapsed time: {}ms.'.format(tm.getTimeMilli()))
time: 206.77733421325684
Elapsed time: 206.3459ms.
*참고 : OpenCV를 활용한 컴퓨터 비전과 딥러닝
'Fields Applied with AI > 컴퓨터 비전 Computer Vision' 카테고리의 다른 글
Ⅱ. 영상 처리 기법 (1. 영상의 밝기 조절) (0) | 2022.03.27 |
---|---|
Ⅰ. 컴퓨터 비전 기초 (7. 입력 장치 이벤트) (0) | 2022.03.13 |
Ⅰ. 컴퓨터 비전 기초 (6. 동영상이란?) (0) | 2022.02.27 |
Ⅰ. 컴퓨터 비전 기초 (5. 마스크 연산과 ROI) (0) | 2022.02.25 |
Ⅰ. 컴퓨터 비전 기초 (4. 영상의 생성, 복사, 추출) (0) | 2022.02.24 |