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 已正确附加。见下图。

Click list with append

当我将列表转换为数组时,大小再次为 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 (将#修改为@)