gpt4 book ai didi

python - 有没有办法加快python中的嵌套for循环?

转载 作者:行者123 更新时间:2023-12-02 16:19:14 25 4
gpt4 key购买 nike

我只是想知道是否有一种方法可以加快 Python 中 for 循环的性能。

for i in range (0,img.shape[0],new_height):
for j in range(0,img.shape[1],new_width):
cropped_image = img[i:i+new_height,j:j+new_width]
yuv_image = cv2.cvtColor(cropped_image,cv2.COLOR_BGR2YUV)
Y,U,V = cv2.split(yuv_image)
pixel_image_y = np.array(Y).flatten()

最佳答案

在将整个图像转换为 YUV 空间后,我们可以简单地 reshape 成那些更小的 block -

m,n = img.shape[:2]
yuv = cv2.cvtColor(img,cv2.COLOR_BGR2YUV)
yuv4D = yuv[...,0].reshape(m//new_height,new_height,n//new_width,new_width)
out = yuv4D.swapaxes(1,2).reshape(-1,new_height*new_width)

1024x1024 RGB 图像的计时 -
In [157]: img = np.random.randint(0,256,(1024,1024,3)).astype(np.uint8)
...: new_height,new_width = 32,32

In [158]: %%timeit
...: out = []
...: for i in range (0,img.shape[0],new_height):
...: for j in range(0,img.shape[1],new_width):
...: cropped_image = img[i:i+new_height,j:j+new_width]
...: yuv_image = cv2.cvtColor(cropped_image,cv2.COLOR_BGR2YUV)
...: Y,U,V = cv2.split(yuv_image)
...: pixel_image_y = np.array(Y).flatten()
...: out.append(pixel_image_y)
11.9 ms ± 991 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [159]: %%timeit
...: m,n = img.shape[:2]
...: yuv = cv2.cvtColor(img,cv2.COLOR_BGR2YUV)
...: yuv4D = yuv[...,0].reshape(m//new_height,new_height,n//new_width,new_width)
...: out1 = yuv4D.swapaxes(1,2).reshape(-1,new_height*new_width)
1.48 ms ± 5.23 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

关于python - 有没有办法加快python中的嵌套for循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62039406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com