gpt4 book ai didi

python - 向量化 numpy 例程

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:47 24 4
gpt4 key购买 nike

我编写了以下例程,它采用两条任意曲线并扭曲它们之间的空间,使其适合两条直线之间。对于循环,它按列处理它,因为 np.linspace 不对向量进行操作。有没有办法摆脱这个循环并立即解决整个问题?

def warp(img, iris_curve, pupil_curve):
height, width = img.shape[:2]
iris_height = np.uint8(np.max(np.int8(iris_curve) - pupil_curve))
out = np.zeros((iris_height, width))

for r in range(0,width):
map_theta = np.linspace(pupil_curve[r], iris_curve[r], iris_height)
map_theta = np.uint8(np.rint(map_theta))
out[:, r] = img[map_theta, r]

return np.uint8(out)

谢谢!

最佳答案

如果您查看source code np.linspace,您可以使用它作为代码矢量化的指南。然后你的循环将被替换为类似的内容:

steps = (iris_curve - pupil_curve) / iris_height
map_theta = np.arange(iris_height)[:, None] * steps + pupil_curve
map_theta = np.rint(map_theta).astype(np.uint8)
out = img[map_theta, np.arange(width)]

您可能必须转置输出,如果没有示例,很难调试此类代码。

关于python - 向量化 numpy 例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23977862/

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