我想获得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
答案 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
我不知道sobelx
和sobely
的确切类型是什么,但我认为您的问题中有2 numpy.array
。
注意:我删除了tmp < 0
个案,因为您永远不会有负平方根。