簡體   English   中英

Python:對不同2d numpy數組的2個元素使用函數

[英]Python: using function on 2 elements of different 2d numpy arrays

我想獲取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

這應該可以解決問題:

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的確切類型是sobelx ,但我假設您的問題中有2 numpy.array

注意:我刪除了tmp < 0情況,因為您永遠不會有負平方根。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM