Python: 如何使用 matplotlib.canvas 获取鼠标点击坐标
Python: how to get coordinates on mouse click using matplotlib.canvas
我正在写一个class来处理图像。在那个 class 中,我想定义一个可以让我 return 鼠标点击坐标的方法。我可以将坐标作为属性获取,但是如果我将方法调用到 return 坐标,我会得到一个空元组
代码如下:
import cv2
import matplotlib.pyplot as plt
class TestClass():
def __init__(self):
self.fname = 'image.jpg'
self.img = cv2.imread(self.fname)
self.point = ()
def getCoord(self):
fig = plt.figure()
ax = fig.add_subplot(111)
plt.imshow(self.img)
cid = fig.canvas.mpl_connect('button_press_event', self.__onclick__)
return self.point
def __onclick__(self,click):
self.point = (click.xdata,click.ydata)
return self.point
只要我在 getCoord
中的 mpl_connect
之后插入 plt.show()
,您的代码对我有用:
def getCoord(self):
fig = plt.figure()
ax = fig.add_subplot(111)
plt.imshow(self.img)
cid = fig.canvas.mpl_connect('button_press_event', self.__onclick__)
plt.show()
return self.point
我正在写一个class来处理图像。在那个 class 中,我想定义一个可以让我 return 鼠标点击坐标的方法。我可以将坐标作为属性获取,但是如果我将方法调用到 return 坐标,我会得到一个空元组
代码如下:
import cv2
import matplotlib.pyplot as plt
class TestClass():
def __init__(self):
self.fname = 'image.jpg'
self.img = cv2.imread(self.fname)
self.point = ()
def getCoord(self):
fig = plt.figure()
ax = fig.add_subplot(111)
plt.imshow(self.img)
cid = fig.canvas.mpl_connect('button_press_event', self.__onclick__)
return self.point
def __onclick__(self,click):
self.point = (click.xdata,click.ydata)
return self.point
只要我在 getCoord
中的 mpl_connect
之后插入 plt.show()
,您的代码对我有用:
def getCoord(self):
fig = plt.figure()
ax = fig.add_subplot(111)
plt.imshow(self.img)
cid = fig.canvas.mpl_connect('button_press_event', self.__onclick__)
plt.show()
return self.point