如何解决Pyhton 不更新全局列表 - RectangleSelector
我正在尝试在处理后的 TIFF 图像上绘制一个正方形的感兴趣区域并获取矩形的坐标。
为此,我编写了以下代码:
click = [0,0]
release = [0,0]
def line_select_callback(eclick,erelease):
x1 = eclick.xdata
y1 = eclick.ydata
x2 = erelease.xdata
y2 = erelease.ydata
print(x1,x2,y1,y2)
click.append(x1)
a =len (click)
print ("the lenght of click list is",a )
#click[:] = x1,y1
#release[:] = x2,y2
def toggle_selector(event):
print(' Key pressed.')
if event.key == 't':
if toggle_selector.RS.active:
print(' RectangleSelector deactivated.')
toggle_selector.RS.set_active(False)
else:
print(' RectangleSelector activated.')
toggle_selector.RS.set_active(True)
#fig = plt.figure('Image filtered and normalized')
fig,ax = plt.subplots()
#cursor = Cursor(ax,useblit=True,color='blue',linewidth=2 )
plt.imshow(im_filt_norm,cmap=plt.cm.rainbow)
figManager = plt.get_current_fig_manager()
figManager.window.showMaximized()
plt.title('Image filtered and normalized',fontsize=25)
# drawtype is 'Box' or 'line' or 'none'
toggle_selector.RS = RectangleSelector(ax,line_select_callback,drawtype='Box',button=[1,3],# disable middle button
minspanx=5,minspany=5,spancoords='pixels',interactive=True,rectprops = dict(facecolor='black',edgecolor = 'black',alpha=0.8,fill=True))
fig.canvas.mpl_connect('key_press_event',toggle_selector)
plt.show()
plt.colorbar()
start_roi = np.array (click)
b = len (start_roi)
print ("the lenght of start_roi is",b )
print ("this is start_ROI",start_roi)
主要是我定义了一个名为 Click 的全局列表,它由两个零组成,我希望通过附加的 x1 进行更新。代码尚未完成,因为我正在排除故障。
使用 append 给出了一个奇怪的结果:Spyder 看到 size = 2 ,但打开它我发现了三列,所以似乎 x1 已正确附加。见下图。
当我将列表转换为数组时,大小再次为 2 ,它由两个零组成,如 line_select_callback 中定义的那样。
使用 : click[:] = x1,y1
也不起作用,给出由两个零组成的列表,但实际上如果我在 IDE 控制台中打开它,我可以看到从矩形选择器中获取的实际值。
见下图:
Click list with click[:] = x1,y1
感觉有点卡住了,我也试过在def line_select_callback(eclick,erelease):
之后定义x1,y2为全局变量
提前感谢任何想提供帮助的人
安德里亚
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。