2016-03-16 2 views

ответ

0

С помощью scipy.misc.imread() вы получаете простой в обращении массив изображения. Имейте в виду, что каждый пиксель цветных изображений состоит из трех значений, по одному для каждого канала RGB. Я уменьшил масштаб изображения до оттенков серого через flatten=True для скалярных пикселей. Конечно, вы можете продлить мой ответ на отдельную медиану всех каналов.

import numpy as np 
from scipy import misc 
pic = misc.imread("ri1.jpg", flatten=True) 
x, y = np.meshgrid(np.arange(pic.shape[1]), np.arange(pic.shape[0])) 
circle_x, circle_y, circle_radius = 200, 400, 100 
args = np.argwhere(np.sqrt((x-circle_x)**2+(y-circle_y)**2)<circle_radius) 
#pic[args] = np.median(pic[args]) # doesn't work?!? 
pic[args[:,0], args[:,1]] = np.median(pic[args[:,0], args[:,1]]) 
misc.imsave("ri1_new.jpg", pic) 
Смежные вопросы