所以,我从大学得到了一个与Python相关的任务。我们需要(从文件夹中)获取一组图像,然后尽快调整它们的大小。所以我设法使用 cv2 调整大小选项来做到这一点。但是,显然我们可以使用 GPU 更快地完成任务。但不幸的是我无法找到使用 openCV 模块做到这一点的最佳方法。
我找到了这段代码,但它不是 openCV 相关的。
import numpy as np
from timeit import default_timer as timer
from numba import vectorize
@vectorize(['float32(float32, float32)'], target='cuda')
def pow(a, b):
return a ** b
def main():
vec_size = 100000000
a = b = np.array(np.random.sample(vec_size), dtype=np.float32)
c = np.zeros(vec_size, dtype=np.float32)
start = timer()
c = pow(a, b)
duration = timer() - start
print(duration)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
编辑:我发现了一个叫做“UMat”的东西,使用它有什么好处?我尝试以这种方式在我的代码中使用:
image = cv2.UMat(cv2.resize(image, (0, 0), fx=0.5, fy=0.5)) # Resize image by half
Run Code Online (Sandbox Code Playgroud)
是的,您可以在 OpenCV 中使用 GPU 模块,但不幸的是只能在 C++ 中使用。Python 没有包装器。
解决方案: