要安装OpenCV,只需cmd下的一条指令:

1
pip install opencv-python

pip是Python的包管理器,如果你还没安装Python,强烈推荐安装Anaconda,它包含了大量的科学计算包,不用后期一个个安装。即使你已经装了Python也没有影响,Anaconda相当于虚拟环境,互不干扰。

评估代码运行时间(性能分析)

1
2
3
4
5
6
import cv2

start = cv2.getTickCount()
# 这里写测试代码...
end = cv2.getTickCount()
print((end - start) / cv2.getTickFrequency())

这段代码就是用来测量程序运行时间的(单位:s),其中cv2.getTickCount()函数得到电脑启动以来的时钟周期数,cv2.getTickFrequency()返回你电脑的主频,前后相减再除以主频就是你代码的运行时间(这样解释并不完全准确,但能理解就行)。另外,也可以用Python中的time模块计时:

1
2
3
4
5
6
import time

start = time.clock()
# 这里写测试代码...
end = time.clock()
print(end - start)

优化原则

数据元素少时用Python语法,数据元素多时用Numpy:

1
2
3
4
5
6
7
x = 10
z = np.uint8([10])

# 尝试比较下面三句话各自的运行时间
y = x * x * x # (1.6410249677846285e-06)
y = x**3 # (2.461537451676943e-06)
y = z * z * z # 最慢 (3.1179474387907945e-05)

所以Numpy的运行速度并不一定比Python本身语法快,元素数量较少时,请用Python本身格式。

尽量避免使用循环,尤其嵌套循环,因为极其慢!!!
优先使用OpenCV/Numpy中封装好的函数
尽量将数据向量化,变成Numpy的数据格式
尽量避免数组的复制操作