我正在嘗試5 by 5在灰色影像上滑動 2D 視窗。如果該 2D 視窗內的所有像素都等于 200,則將視窗內的中心像素值替換為 100。
import cv2
import numpy as np
from PIL import Image
from scipy.signal import convolve2d as conv2
image = cv2.imread("testImage.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
output = (conv2(gray, np.ones((5, 5), dtype=int), 'valid') == 200).astype(int)
我不知道從這里去哪里或如何做到這一點

uj5u.com熱心網友回復:
你幾乎是正確的。您的 convolve2d 事物的輸出是一個布爾陣列,該陣列具有 True 您希望更改值的位置。您可以將其用作原始陣列的精美索引,這是 numpy 的最佳功能之一。請注意,您需要“相同”,而不是“有效”,以確保輸出陣列具有正確的大小。
import cv2
import numpy as np
from scipy.signal import convolve2d as conv2
image = cv2.imread("splat.png")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
box = np.ones((3,3),dtype=int)
output = conv2(gray, box, 'same') == 200
gray[output] = 100
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419800.html
標籤:
上一篇:匯入cv2時出現問題
