use*_*523 4 image-processing matplotlib mouseevent
所以我正在尝试编写一个程序来检测图像上的鼠标点击并保存x,y位置.我一直在使用matplotlib并且我使用了基本的绘图,但是当我尝试对图像使用相同的代码时,我收到以下错误:
cid = implot.canvas.mpl_connect('button_press_event',onclick)'AxesImage'对象没有属性'canvas'
这是我的代码:
import matplotlib.pyplot as plt
im = plt.imread('image.PNG')
implot = plt.imshow(im)
def onclick(event):
if event.xdata != None and event.ydata != None:
print(event.xdata, event.ydata)
cid = implot.canvas.mpl_connect('button_press_event', onclick)
plt.show()
Run Code Online (Sandbox Code Playgroud)
如果您对如何解决这个问题或者更好的方法来实现我的目标有任何想法,请告诉我.非常感谢!
问题是它implot
是一个Artist
绘制到canvas
实例的子类,但不包含对画布的(易于获取)引用.您要查找的属性是figure
类的属性.
你想做:
ax = plt.gca()
fig = plt.gcf()
implot = ax.imshow(im)
def onclick(event):
if event.xdata != None and event.ydata != None:
print(event.xdata, event.ydata)
cid = fig.canvas.mpl_connect('button_press_event', onclick)
plt.show()
Run Code Online (Sandbox Code Playgroud)