我正在尝试使用滑块交互式地更改图像的内容(例如,用于应用具有不同内核大小的中值操作)。
虽然如果我只显示一个结果图像(参见注释行),这很有效,但是在使用子图功能时会遇到麻烦,因为图像不会更新。
我错过了什么?
%matplotlib inline
from ipywidgets import interact, widgets
import matplotlib.pyplot as plt
import warnings
from skimage.morphology import disk
from skimage.filters import rank
from skimage.color import rgb2gray
import skimage.data
def f(Median_Size):
selem = disk(int(Median_Size))
with warnings.catch_warnings():
warnings.simplefilter("ignore")
img_median = rank.median(img_gray, selem=selem)
ax_neu.imshow(img_median, cmap="gray")
fig.canvas.draw()
#plt.imshow(img_median, cmap="gray") #This would work
#plt.show()
image = skimage.data.camera() #plt.imread("Test.png")
img_gray = rgb2gray(image)
fig = plt.figure(figsize=(6, 4))
ax_orig = fig.add_subplot(121)
ax_neu = fig.add_subplot(122)
ax_orig.imshow(img_gray, cmap="gray")
ax_neu.imshow(img_gray, cmap="gray")
interact(f, Median_Size=widgets.IntSlider(min=1,max=21,step=2,value=1))
答案 0 :(得分:4)
%matplotlib notebook
您可以使用笔记本后端,而不是内联后端。这将允许按照预期的方式调用figure.canvas.draw()
作为脚本运行代码。将行%matplotlib inline
替换为
%matplotlib notebook
并重新启动内核。
display
更改后的新数字可能会display
%%capture
%matplotlib inline
from ipywidgets import interact, widgets
from IPython.display import display
import matplotlib.pyplot as plt
import warnings
from skimage.morphology import disk
from skimage.filters import rank
from skimage.color import rgb2gray
import skimage.data
def f(Median_Size):
selem = disk(int(Median_Size))
with warnings.catch_warnings():
warnings.simplefilter("ignore")
img_median = rank.median(img_gray, selem=selem)
ax_neu.imshow(img_median, cmap="gray")
fig.canvas.draw()
display(fig)
image = skimage.data.camera() #plt.imread("Test.png")
img_gray = rgb2gray(image)
fig = plt.figure(figsize=(6, 4))
ax_orig = fig.add_subplot(121)
ax_neu = fig.add_subplot(122)
ax_orig.imshow(img_gray, cmap="gray")
ax_neu.imshow(img_gray, cmap="gray")
。缺点是它会产生两次输出。然后解决方法是将交互放在新单元格中并捕获第一个单元格的输出。
interact(f, Median_Size=widgets.IntSlider(min=1,max=21,step=2,value=1));
在新单元格中
-rw-r--r-- 1 lhn2 lhn2 670 Jan 19 10:21 index.php
-rw-r--r-- 1 lhn2 lhn2 32 Jan 19 10:19 stylesheet.css