簡體   English   中英

使用 for 循環對圖像進行多次卷積 opencv python

[英]Convolve an image several times using for loop opencv python

下面是對圖像執行 10 次卷積的 python 代碼

import cv2
import numpy as np
from skimage.exposure import rescale_intensity
kernel = np.ones((5,5),np.float32)/25
img = cv2.imread(r"C:/Users/engjb/.spyder-py3/examples/1.jpeg")





opencvOutput1 = cv2.filter2D(img, -1, kernel)


opencvOutput2 = cv2.filter2D(opencvOutput1, -1, kernel)
opencvOutput3 = cv2.filter2D(opencvOutput2, -1, kernel)
opencvOutput4 = cv2.filter2D(opencvOutput3, -1, kernel)
opencvOutput5 = cv2.filter2D(opencvOutput4, -1, kernel)
opencvOutput6 = cv2.filter2D(opencvOutput5, -1, kernel)
opencvOutput7 = cv2.filter2D(opencvOutput6, -1, kernel)
opencvOutput8 = cv2.filter2D(opencvOutput7, -1, kernel)
opencvOutput9 = cv2.filter2D(opencvOutput8, -1, kernel)
opencvOutput10 = cv2.filter2D(opencvOutput9, -1, kernel)

cv2.imshow("res",opencvOutput10)

cv2.waitKey(0)

cv2.destroyAllWindows()

我如何使用一個 for 循環來做到這一點。 (我是 python 新手)我知道這一定很容易,但我就是不能開箱即用

我的概念代碼:

for i in rage(0,11):
 output = cv2.filter2D(img, -1, kernel)

但是,這在每次迭代中對同一源圖像執行卷積,而我希望在每次迭代的 output 上執行卷積

img = cv2.imread( ... )
for i in range(10):
    print(i)
    img = cv2.filter2D(img, -1, kernel)

請注意,這與分配完全不同

    output = cv2.filter2D(img, ... )

因為我們希望一次迭代使用 output。 如果不將 output 作為下一個輸入返回,您將只進行一次卷積。 而且你會做它慢 10 倍,無用地計算相同的結果另外 9 次,丟棄(覆蓋)每次都有效。

暫無
暫無

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

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