python opencv 性能测量和改进技术

本文介绍如何利用OpenCV的getTickCount和getTickFrequency函数测量代码执行时间,对比了Python和Numpy在不同操作上的性能差异,并展示了如何使用IPython的%timeit指令获得更精确的性能数据。
部署运行你感兴趣的模型镜像
# cv2.getTickFrequency函数返回时钟频率或者每秒钟的时钟循环数
# cv2.getTickCount 函数返回从一个参考时间(比如机器开机的时间)开始到这个函数被调用的时间之间的时钟循环数量。
import cv2
import numpy as np
img1 = cv2.imread('messi5.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)

0.0002125430419413002
x = 5
# IPython提供了一个魔法指令%timeit来干这个,它运行代码若干次来得到准确结果,很适合用来测量单行代码。
%timeit y=x**2
289 ns ± 10.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%timeit y=x*x
45 ns ± 1.07 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
 z = np.uint8([5])
%timeit y=z*z
The slowest run took 11.67 times longer than the fastest. This could mean that an intermediate result is being cached.
3.1 µs ± 4.39 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)
%timeit y=np.square(z)
414 ns ± 9.65 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
# Python标量运算时比Numpy标量运算要快的。所以对于包含1到两个元素的运算,Python标量要比Numpy数组要快。Numpy在数组尺寸有点大的时候占优势。

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值