我正在尝试在处理后的 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', useblit=True,
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定义的那样。
using :click[:] = x1, y1
也不起作用,给出一个由两个零组成的列表,但实际上如果我在 IDE 控制台中打开它,我可以看到从矩形选择器中获取的实际值。
见下图:
感觉有点卡住了,我也试过把x1、x2、y1和y2定义为全局变量,就在后面def line_select_callback(eclick, erelease):
但在这种情况下,我也无法从函数中找到它们。
提前感谢任何想要帮助的人,
安德烈亚