使用matplotlib检测图像中的鼠标事件

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)

如果您对如何解决这个问题或者更好的方法来实现我的目标有任何想法,请告诉我.非常感谢!

tac*_*ell 8

问题是它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)