向ipython交互式小部件添加移动水平线
根据找到的教程,我试图创建一个IPython 2.0小部件,它可以让我在图像中添加一条或多条水平线,然后根据滑块的运动垂直移动它们。我当前的尝试看起来像(在IPython 2.0笔记本中): 结果如下: 其中,我希望图像使用相同的背景图像重新绘制,并基于滑块值更新线位置。使用IPython交互式小部件机制,是否有办法重用“基本”图像并用新行重新绘制 如果有必要,我当前安装的版本为: $ipython--版本 2.0.0 $python—版本向ipython交互式小部件添加移动水平线,ipython,ipython-notebook,Ipython,Ipython Notebook,根据找到的教程,我试图创建一个IPython 2.0小部件,它可以让我在图像中添加一条或多条水平线,然后根据滑块的运动垂直移动它们。我当前的尝试看起来像(在IPython 2.0笔记本中): 结果如下: 其中,我希望图像使用相同的背景图像重新绘制,并基于滑块值更新线位置。使用IPython交互式小部件机制,是否有办法重用“基本”图像并用新行重新绘制 如果有必要,我当前安装的版本为: $ipython--版本 2.0.0 $python—版本 Python 2.7.6::Anaconda 1.9
Python 2.7.6::Anaconda 1.9.0(x86_64)您应该处理原始图像的副本,如下所示:
from IPython.html.widgets import interact, interactive, fixed
from IPython.display import display
import skimage
from skimage import data, filter, io
i = data.coffee()
def add_lines(image, line1 = 100, line2 = 200):
new_image = image.copy() # Work on a copy
new_image[line1,:,:] = 0
new_image[line2,:,:] = 0
new_image = io.Image(new_image)
display(new_image)
lims = (0,400,2)
interactive(add_lines, image=fixed(i), line1 = lims, line2 = lims)
谢谢你的帮助!我没有想到使用图像的
copy()
。
from IPython.html.widgets import interact, interactive, fixed
from IPython.display import display
import skimage
from skimage import data, filter, io
i = data.coffee()
def add_lines(image, line1 = 100, line2 = 200):
new_image = image.copy() # Work on a copy
new_image[line1,:,:] = 0
new_image[line2,:,:] = 0
new_image = io.Image(new_image)
display(new_image)
lims = (0,400,2)
interactive(add_lines, image=fixed(i), line1 = lims, line2 = lims)