Форум сайта python.su
Хотел написать для начала простую программку для картинок в формате .fit.
Буквально сразу столкнулся с проблемой удобного отображения картинки. Везде в примерах используется matplotlib.pyplot.
Картинка открывается, показывается, но хотелось бы “нормализовывать” по собственному усмотрению. Для это добавил два “слайдера”, всё вроде понятно. Но не понятно что нужно дописать в функции def(), чтобы изменилась эта “нормализация” и картинка перерисовалась.
Есть в примерах что-то похожее, но везде немного не то, что нужно и в итоге не работает.
Или здесь придётся нормализовать в ручную данные картинки?
import matplotlib.pyplot as plt from astropy.visualization import astropy_mpl_style from matplotlib.widgets import Slider from astropy.io import fits plt.style.use(astropy_mpl_style) max1=10000 min1=0 image_file = "1.fit" fits.info(image_file) image_data = fits.getdata(image_file, ext=0) im = plt.imshow(image_data, cmap='gray', norm=plt.Normalize(min1,max1), animated=True) axcolor = 'lightgoldenrodyellow' axmax = plt.axes([0.25, 0, 0.65, 0.03], axisbg=axcolor) axmin = plt.axes([0.25, 0.05, 0.65, 0.03], axisbg=axcolor) max11 = Slider(axmax, 'max', 1, 100000, valinit=10000) min11 = Slider(axmin, 'min', 1, 100000, valinit=10) def update(val): max1=max11.val min1=min11.val ? max11.on_changed(update) min11.on_changed(update) plt.show()
Офлайн
Ура! Утро вечера мудренее. Видать тогда вечером совсем уставший был.
Нужно добавить строку:
im.set_norm(plt.Normalize(min1,max1))
Офлайн