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

2024-05-19 00:00:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想得到两个数组的等价索引之和,然后设置它们的阈值。这段代码运行速度很慢,我不得不经常使用这个函数。在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

Tags: inforrangemathcv2cvtmppow
1条回答
网友
1楼 · 发布于 2024-05-19 00:00:44

这应该可以做到:

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的确切类型是什么,但我假设从你的问题中有2numpy.array。你知道吗

注意:我去掉了tmp < 0的情况,因为你永远不会有负的平方根。你知道吗

相关问题 更多 >

    热门问题