# use getTickCount() to get time e1 = cv.getTickCount() # CODE e2 = cv.getTickCount() time = (e2 - e1)/cv.getTickFrequency() print(time) #结果以秒为单位
# 使用time.clock()计时 start = time.clock() # CODE elapsed = (time.clock() - start)
print(time) #结果以秒为单位
许多OpenCV函数都是使用SSE2、AVX等进行优化的。它还包含未加密的代码。因此,如果我们的系统支持这些特性,我们就应该利用它们(几乎所有现代处理器都支持它们)。编译时默认启用它。因此,如果OpenCV启用了优化代码,它将运行优化后的代码,否则它将运行未经优化的代码。可以使用cv.useoptimization()检查是否启用/禁用了它,并使用cv.setuseoptimization()启用/禁用它。
一般情况下 OpenCV 的函数要比 Numpy 函数快。所以对于相同的操 作最好使用 OpenCV 的函数。当然也有例外,尤其是当使用 Numpy 对视图 (而非复制)进行操作时。
有时您可能需要比较两个类似操作的性能。IPython提供了一个神奇的命令timeit来执行此操作。它运行代码较少的次数获得更精确的结果。同样,它们也适用于测量单行代码。
Python标量操作比Numpy标量操作快。因此,对于包含一两个元素的操作,Python标量优于Numpy数组。当数组的大小稍微大一点时,Numpy就会发挥作用。
我们试一个例子。这一次,我们将比较相同图像的cv.countNonZero()和np.count_nonzero()的性能。
In [35]: %timeit z = cv.countNonZero(img) 100000 loops, best of 3: 15.8 us per loop In [36]: %timeit z = np.count_nonzero(img) 1000 loops, best of 3: 370 us per loop
OpenCV函数比Numpy函数快25倍。
通常,OpenCV函数比Numpy函数更快。因此,对于相同的操作,OpenCV函数是首选的。但是,也有例外,特别是当Numpy使用视图而不是副本时。
opencv-python-学习笔记七(程序性能检测及提升)
原文:https://www.cnblogs.com/blog-xyy/p/11184357.html