首页 > 解决方案 > 为什么 OpenCV 在浮点数上比 Numpy 快这么多?

问题描述

首先,一个例子:

In[1]: import numpy as np
  ...: import cv2
  ...: arr = np.random.rand(2000, 2000, 3).astype(np.float32)
In[2]: %timeit cv2.cvtColor(arr, cv2.COLOR_RGB2HSV)
13.1 ms ± 758 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In[3]: %timeit arr*2
13.8 ms ± 172 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

出于某种原因,numpy 中这个简单的操作比执行颜色模型的完全转换需要更长的时间。我希望使用 OpenCV 进行实时图像分析来完成大部分繁重的工作并使用 Numpy 执行一些粘合操作,但鉴于此,Numpy 似乎会以某种方式消耗大部分处理时间。是否有一个原因?有没有办法加速 Numpy 使其与 OpenCV 相提并论?有没有办法使用 OpenCV 为一般数组操作提供的任何加速?

标签: pythonnumpyopencv

解决方案


推荐阅读