OpenCV之时间测试和性能优化技术

一、时间测试

对比于Ipython中使用的   %time  (后加多行代码) 、  %timeit  (后加单行代码),OpenCV也有自己的时间测试计算函数

  • cv2.getTickCount:函数返回一个参考事件(就像机器开启的瞬间)到此函数被调用之间的时钟周期数。所以如果你在一个函数执行之前和之后调用它,你会得到用来执行一个函数的时钟周期数。
  • cv2.getTickFrequency:函数返回时钟周期的频率或每秒钟的时钟周期数。所以要以秒数为单位测量执行的时间

python测试代码:

以中值滤波为例

import cv2
import numpy as np

img1 = cv2.imread("C:/Users/NWPU/Desktop/1.jpg")
e1 = cv2.getTickCount()
#中值滤波
for i in range(5, 49, 2):
    img1 = cv2.medianBlur(img1, i)
e2 = cv2.getTickCount()
t = (e2 - e1) / cv2.getTickFrequency()
print(t)

 

二、python和Numpy的性能优化技术

  1. 尽可能避免在Python中使用循环,特别是双/三重循环等。它们注定很慢。
  2. 尽量矢量化算法/代码,因为Numpy和OpenCV针对矢量操作进行了优化。
  3. 利用缓存一致性。
  4. 除非必要,否则不要复制数组。尝试使用Numpy视图。数组的复制是一个代价高昂的操作。

在完成所有这些操作之后,如果代码仍然很慢,或者使用循环是不可避免的,那么可以使用像Cython这样的库来加快运行速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值