Python 单击鼠标将图像坐标指定给变量
下面的代码给出了鼠标单击事件中图像的x和y坐标。我想将x和y坐标分配给全局变量Python 单击鼠标将图像坐标指定给变量,python,Python,下面的代码给出了鼠标单击事件中图像的x和y坐标。我想将x和y坐标分配给全局变量x和y,而不是打印它们,然后关闭图像。请问我该怎么做 %matplotlib tk import matplotlib.pyplot as plt import matplotlib.image as mpimg fig = plt.figure(figsize=(20,30)) img=mpimg.imread(workingimage) def onclick(event): ix, iy = eve
x
和y
,而不是打印它们,然后关闭图像。请问我该怎么做
%matplotlib tk
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
fig = plt.figure(figsize=(20,30))
img=mpimg.imread(workingimage)
def onclick(event):
ix, iy = event.xdata, event.ydata
print(ix, iy)
cid = fig.canvas.mpl_connect('button_press_event', onclick)
imgplot = plt.imshow(img)
plt.show()
您可以将这些值分配给2个全局变量并调用
plt.close()
:
%matplotlib-tk
将matplotlib.pyplot作为plt导入
将matplotlib.image导入为mpimg
图=plt.图(图尺寸=(20,30))
img=mpimg.imread(工作图像)
def onclick(事件):
全局在x上单击,在y上单击
在x上单击,在y上单击=event.xdata,event.ydata
plt.close()
cid=fig.canvas.mpl\u connect('button\u press\u event',onclick)
imgplot=plt.imshow(img)
plt.show()
打印(“点击位置”,点击x,点击y)
#代码的其余部分
您可以将值分配给两个全局变量,然后调用plt.close()
:
%matplotlib-tk
将matplotlib.pyplot作为plt导入
将matplotlib.image导入为mpimg
图=plt.图(图尺寸=(20,30))
img=mpimg.imread(工作图像)
def onclick(事件):
全局在x上单击,在y上单击
在x上单击,在y上单击=event.xdata,event.ydata
plt.close()
cid=fig.canvas.mpl\u connect('button\u press\u event',onclick)
imgplot=plt.imshow(img)
plt.show()
打印(“点击位置”,点击x,点击y)
#代码的其余部分
因此我修改了您的代码,使其能够正常工作:
#%matplotlib tk
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import time
fig = plt.figure(figsize=(20,30))
img=mpimg.imread(working_image)
def onclick(event):
ix, iy = event.xdata, event.ydata
#global x,y
#x,y = ix,iy
#print(ix, iy)
plt.close() #closing the figure
get_x(ix,iy)
def get_x(pX,pY):
print("X-Coordinate: " + str(pX))
print("Y-Coordinate: " + str(pY))
cid = fig.canvas.mpl_connect('button_press_event', onclick)
imgplot = plt.imshow(img)
plt.show()
这些变化:
将ix,iy
传递给下一个需要它们作为参数的函数。您可以将它们指定为全局变量,这样就不需要参数,但应该避免使用全局变量
行plt.close(图)
关闭名为fig
因此,我希望这能回答您的所有问题,因此我修改了您的代码,使其能够正常工作:
#%matplotlib tk
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import time
fig = plt.figure(figsize=(20,30))
img=mpimg.imread(working_image)
def onclick(event):
ix, iy = event.xdata, event.ydata
#global x,y
#x,y = ix,iy
#print(ix, iy)
plt.close() #closing the figure
get_x(ix,iy)
def get_x(pX,pY):
print("X-Coordinate: " + str(pX))
print("Y-Coordinate: " + str(pY))
cid = fig.canvas.mpl_connect('button_press_event', onclick)
imgplot = plt.imshow(img)
plt.show()
这些变化:
将ix,iy
传递给下一个需要它们作为参数的函数。您可以将它们指定为全局变量,这样就不需要参数,但应该避免使用全局变量
行plt.close(图)
关闭名为fig
所以我希望这能回答你所有的问题谢谢你的代码。不幸的是,当我点击图像
x
时,我仍然显示0的值能够重现错误,我将检查周一您可能想要阅读文档的变量和范围页面。是的,愚蠢的错误…,我编辑了我的答案,以便如果您真的想全局使用变量,它现在可以工作,约翰在他的回答中表明了这一点。我编辑了一个选项的答案,在这个选项中,我将它们作为参数处理,然后将它们交给下一个方法。。。thx William Miller感谢您的代码。不幸的是,当我点击图像x
时,我仍然显示0的值能够重现错误,我将检查周一您可能想要阅读文档的变量和范围页面。是的,愚蠢的错误…,我编辑了我的答案,以便如果您真的想全局使用变量,它现在可以工作,约翰在他的回答中表明了这一点。我编辑了一个选项的答案,在这个选项中,我将它们作为参数处理,然后将它们交给下一个方法。。。thx威廉·米勒