我正在使用OpenCV和numpy开发一个图像处理程序。对于大多数像素操作,我能够通过使用np.vectorize()避免嵌套的for循环,但其中一个需要实现的函数需要一个参数'距离中心的距离',或者基本上是正在处理的点的坐标。
伪例子:
我显然无法从向量化数组中获得elemX和elemY,但是否有另一个我可以在这种情况下使用的numpy函数,还是必须使用 for 循环?有没有一种使用openCV的方法来实现?
我需要通过以下函数处理每个像素:
伪例子:
myArr = [[0,1,2]
[3,4,5]]
def myFunc(val,row,col):
return [row,col]
f = np.vectorize(myFunc)
myResult = f(myArr,row,col)
我显然无法从向量化数组中获得elemX和elemY,但是否有另一个我可以在这种情况下使用的numpy函数,还是必须使用 for 循环?有没有一种使用openCV的方法来实现?
我需要通过以下函数处理每个像素:
f(i, j) = 1 / (1 + d(i, j) / L)
,其中d(i,j)是点到图像中心的欧几里得距离。
np.vectorize
。使用它将让你走上错误的轨道(在多年使用numpy的工作中,我从未使用过它)。相反,numpy应该使编写代码更容易并且运行更快,就像上面的f
表达式;这两个都是你想要的。也许一个超短的numpy教程可以帮助你正确入门。 - tom10