我遇到了skimage.viewer.canvastools.RectangleTool()
的麻烦,如能提供任何帮助,我将不胜感激。在
我希望选择框是交互式的,也就是说,在绘图之后,可以使用手柄编辑所选区域。此功能appears to work与{
from matplotlib.widgets import RectangleSelector
from pylab import *
def onselect(eclick, erelease):
'Dummy function'
x = arange(100)/(99.0)
y = sin(x)
fig = figure
ax = subplot(111)
ax.plot(x,y)
test = RectangleSelector(ax, onselect,
drawtype='box',
interactive=True)
show()
但是,当我使用
^{pr2}$我被甩了:
TypeError: init() got an unexpected keyword argument 'interactive'
…如果我使用
rect_tool = RectangleTool(viewer,
on_enter=save_region,
rect_props=dict(interactive=True))
我被抛出这个错误:
AttributeError: Unknown property interactive
我是否误解了manpage?在
非常感谢!在
这就是我所处的位置(矩形工具不交互):
import skimage.io
from skimage.viewer import ImageViewer
from skimage.viewer.canvastools import RectangleTool
import numpy as np
from tkinter import Tk
from tkinter.filedialog import askopenfilename
from tkinter.simpledialog import askfloat
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)
image_rgb = skimage.io.imread(filename)
image_r = image_rgb[:,:,0] # extract red channel
########
# Does this need to be initialised differently to make the rectangle interactive?
viewer = ImageViewer(image_r)
intensity_dumps = [] # used to store pixel values for selected regions
def save_region(extents):
global image_r, intensity_dumps
xmin = np.floor(extents[0]).astype('uint16')
xmax = np.ceil(extents[1]).astype('uint16')
ymin = np.floor(extents[2]).astype('uint16')
ymax = np.ceil(extents[3]).astype('uint16')
region = image_r[ymin:ymax,xmin:xmax]
intensity_dumps.append(np.ndarray.flatten(region))
print('Mean:',np.mean(region))
print('Std. dev.:',np.std(region))
print('Max:',np.max(region))
########
# Here is where I believe the problem lies...
rect_tool = RectangleTool(viewer,
on_enter=save_region)
thresholded = viewer.show()[0][0]
是的,我想你误解了。请注意,
RectangleTool
没有interactive=
参数。相反,有一个rect_props
参数,它是一个字典。字典项将作为关键字参数传递给RectangleSelector
。所以你想要:RectangleTool(..., rect_props=dict(interactive=True)
。在谢谢你给胡安一些有用的建议。在
我的目标是有滑块和一个交互式矩形选择器。最后我决定不使用
scikit-image
库,而是直接使用matplotlib
。在这是我的代码的一个简化版本,可供将来遇到类似问题时使用:
相关问题 更多 >
编程相关推荐