본문 바로가기

OpenCV-Python

OpenCV Python 연산 시간 측정

https://wjh2307.tistory.com/11의 양방향 필터가 적용되는 시간을 구해보는데 적용해보겠습니다.

 

OpenCV Python 필터링 - 잡음 제거 : 양방향(bilateral) 필터

잡음 제거 필터의 하나 기준 픽셀, 이웃 픽셀과의 거리, 픽셀 값의 차이를 함께 고려하여 블러링 정도 조정 가우시안 필터의 경우 에지 부분까지 blurring 하여 이미지의 형태조차 알아보기 힘든

wjh2307.tistory.com

 

방법 1 : cv2.TickMeter() - opencv 제공

 

import cv2
import numpy as np

img = cv2.imread("imgs/Lenna.png")

img = cv2.resize(img, dsize=(0, 0), fx=2, fy=2)

tm = cv2.TickMeter() # 객체를 따로 생성해주어야합니다.
tm.start()

dst = cv2.bilateralFilter(img, -1, 10, 10)
dst2 = cv2.bilateralFilter(img, -1, 50, 10)

tm.stop()
ms = tm.getTimeMilli()

print(f'{ms}ms')

cv2.imshow("Lenna", img)
cv2.imshow("dst", dst)
cv2.imshow("dst2", dst2)

cv2.waitKey()
cv2.destroyAllWindows()

tm.start() : 시간 측정 시작

tm.stop() : 시간 측정 끝

tm.reset() : 시간 측정 초기화

 

tm.getTimeSec() : 측정 시간을 초 단위로 반환

tm.getTimeMilli() : 측정 시간을 밀리 초 단위로 반환

tm.getTimeMicro() : 측정 시간을 마이크로 초 단위로 반환

 

실행결과

  • 353.6817 ms
  • 327.4478 ms
  • 365.5118 ms
  • 383.523 ms

방법 2 : time.time() - time 패키지에서 제공

 

import cv2
import numpy as np
import time

img = cv2.imread("imgs/Lenna.png")

img = cv2.resize(img, dsize=(0, 0), fx=2, fy=2)

t1 = time.time()

dst = cv2.bilateralFilter(img, -1, 10, 10)
dst2 = cv2.bilateralFilter(img, -1, 50, 10)

t2 = time.time()

print(f'{(t2-t1)}s')

cv2.imshow("Lenna", img)
cv2.imshow("dst", dst)
cv2.imshow("dst2", dst2)

cv2.waitKey()
cv2.destroyAllWindows()

 

t2가 나중에 일어난 일이고 t1이 먼저 일어난 일이니 나중에 일어난 일 - 먼저 일어난 일로

t2의 시간과 t1의 시간을 구해서 뺀 것입니다.

실행결과

  • 0.37560343742370605 s
  • 0.3828999996185303 s
  • 0.339125394821167 s
  • 0.3650379180908203 s

제가 실행한 코드에선 cv2.TickMeter() : ms, time.time() : s로 단위를 다르게 출력해서 그렇지 거의 비슷한 시간입니다.

두 개의 비교를 편하게 하시려면 tm.getTimeMilli()를 tm.getTimeSec()로 바꿔주세요

편하신 것을 사용하시면 될 것 같아요.