浅析OpenCV和Python中的的程序性能检测

  在图像处理的过程中,我们不仅在乎图像处理的准确度,还需要考虑程序的效率。本文则对于OpenCV3和python中用来进行性能检测的函数进行介绍:

使用OpenCV进行程序性能检测

在opencv4.4.0版本中,其提供有关时间的处理函数cv2.getTickCount()cv2.getTickFrequency()getTickCount() 函数的返回值为从参考点到函数执行时刻的时钟数, getTickFrequency() 函数的返回值为时钟频率(每秒时钟数)。
下面的例子是使用不同窗口大小做中值滤波作为被评测的函数:

import numpy as np
import cv2

img = cv2.imread(r'ch03\OpenCV.jpg')
# 记录开始时的时钟数
e1 = cv2.getTickCount()
# 使用不同窗口大小做中值滤波
for i in range(5, 49, 2):
    img = cv2.medianBlur(img, i)
# 记录结束时的时钟数
e2 = cv2.getTickCount()
# 先求结束和开始的时间差,再求其与时钟频率的比值,获得程序运行时间
time = (e2 - e1) / cv2.getTickFrequency()
print(time)

执行结果为:0.6663654

使用python的time库进行程序性能检测

Python的time.clock()函数以浮点数计算的秒数返回当前的CPU时间。Python 3.8 已移除 clock() 方法,可以使用 time.perf_counter() 或 time.process_time() 方法替代。

1.调用time.clock()

# 记录开始时的时间
start = time.clock()
# 使用不同窗口大小做中值滤波
for i in range(5, 49, 2):
    img = cv2.medianBlur(img, i)
# 记录结束时的时间
end = time.clock()
# 计算函数执行使用的时间
elapsed = end - start
print(elapsed)

执行结果为:0.6591353000000026,此时系统会提示DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead.

2.调用time.perf_counter()

# 记录开始时的时间
start = time.perf_counter()
# 使用不同窗口大小做中值滤波
for i in range(5, 49, 2):
    img = cv2.medianBlur(img, i)
# 记录结束时的时间
end = time.perf_counter()
# 计算函数执行使用的时间
elapsed = end - start
print(elapsed)

执行结果为:0.6632472000000007
也可以调用函数 time.perf_counter_ns() 返回的时间是以ns为单位,返回值为679703800

3.调用 time.process_time()

# 记录开始时的时间
start = time.process_time()
# 使用不同窗口大小做中值滤波
for i in range(5, 49, 2):
    img = cv2.medianBlur(img, i)
# 记录结束时的时间
end = time.process_time()
# 计算函数执行使用的时间
elapsed = end - start
print(elapsed)

执行结果为:0.65625

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值