Python:在不同的2d numpy数组的2个元素上使用函数

时间:2015-07-30 09:52:34

标签: python arrays numpy

我想获得2个数组的等价索引的总和,然后对它们进行阈值处理。这段代码运行但非常慢,我必须经常使用此功能。在python中有更有效的方法吗?

sobelx = cv2.Sobel(smoothed,cv2.CV_64F,1,0,ksize=-1)
sobely = cv2.Sobel(smoothed,cv2.CV_64F,0,1,ksize=-1)

for i in range(0,height-1):
    for j in range(0,width-1):

        xvalue= sobelx[i,j]
        yvalue= sobely[i,j]
        tmp = math.sqrt(math.pow(xvalue,2) + math.pow(yvalue,2))

        if tmp > 255:
            tmp = 255
        elif tmp <0:
            tmp =0

        self.gradientmap[i,j] = tmp

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

sobelx = cv2.Sobel(smoothed,cv2.CV_64F,1,0,ksize=-1)
sobely = cv2.Sobel(smoothed,cv2.CV_64F,0,1,ksize=-1)

self.gradientmap = numpy.sqrt (sobelx ** 2 + sobely ** 2)
self.gradientmap[self.gradientmap> 255] = 255

我不知道sobelxsobely的确切类型是什么,但我认为您的问题中有2 numpy.array

注意:我删除了tmp < 0个案,因为您永远不会有负平方根。