Почему при назначении значения пикселю в изображении это дает мусор в Python - PullRequest
0 голосов
/ 20 марта 2020

Я реализую фильтр средних значений на изображении, но когда я присваиваю значение пикселю, оно дает много мусора. Вот мой код

def AvergaeFilter():
    ImageToWork = cv2.imread('D:\Y3T2\Brain Tumor\BrainTumourGray.jpg')
    w = ImageToWork.shape[0]
    h = ImageToWork.shape[1]
    for i in range(2,700):
        for j in range(2,700):
            Total = ((ImageToWork[i][j])+(ImageToWork[i][j+1])+(ImageToWork[i+1][j-1])+(ImageToWork[i+1][j])+((ImageToWork[i+1][j+1])+(ImageToWork[i][j-1])+(ImageToWork[i-1][j+1])+(ImageToWork[i-1][j-1])+(ImageToWork[i-1][j])))/9
            ImageToWork[i][j] = Total
    cv2.imwrite('D:\Y3T2\Brain Tumor\BrainGrayTest.jpg', ImageToWork)

Когда я печатаю (всего), это дает значение, но когда я запускаю код для изображения, это дает мусор, как это.

image

1 Ответ

0 голосов
/ 22 марта 2020

Обновленный код [Работает сейчас]

def AverageFilter():
ImageToWork = cv2.imread('D:\Y3T2\Brain Tumor\BrainGrayNoise.jpg', cv2.IMREAD_GRAYSCALE)
ImageToOut = ImageToWork.copy()
height = ImageToWork.shape[0]
width = ImageToWork.shape[1]
for i in np.arange(3, height-3):
    for j in np.arange(3, width-3):    
        Temp = 0  
        for k in np.arange(-3, 4):
            for l in np.arange(-3, 4):
                Value = (ImageToWork.item(i+k, j+l))
                Temp = Temp + Value
            Temp = Temp//9
        ImageToOut.itemset((i,j), Temp)
        #Temp = 0

cv2.imwrite('D:\Y3T2\Brain Tumor\BrainGrayAverageFilter.jpg', ImageToOut)

Вы можете заменить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...