gpt4 book ai didi

python - pyplot : Refreshing an imshow() Window

转载 作者:太空宇宙 更新时间:2023-11-03 16:55:46 24 4
gpt4 key购买 nike

我有两种方法:generate_window(),它显示图像;on_click(),它对显示图像的窗口上的单击使用react。它们看起来像这样:

def generate_panel(img):
plt.figure()
ax = plt.gca()
fig = plt.gcf()
implot = ax.imshow(img)
# When a colour is clicked on the image an event occurs
cid = fig.canvas.mpl_connect('button_press_event', onclick)
plt.show()

def onclick(event):
if event.xdata != None and event.ydata != None:
# Change the contents of the plt window here

在代码的最后一行,我希望能够更改 plt 窗口中显示的图像,但我似乎无法让它工作。我在不同的地方尝试过 set_data() 和 draw() 但没有成功。有什么建议么?提前致谢。

最佳答案

您还必须使用 plt.ion() 启用交互模式然后只需在修改后调用 plt.draw() 就可以了。

注意:使用交互模式时,您必须在 plt.show() 上指定参数 block=True,以防止它立即关闭窗口。

您的示例的修改版本应在每次鼠标单击时绘制一个圆圈:

from matplotlib import pyplot as plt
import matplotlib.image as mpimg
import numpy as np


def generate_panel(img):
plt.figure()
ax = plt.gca()
fig = plt.gcf()
implot = ax.imshow(img)
# When a colour is clicked on the image an event occurs
cid = fig.canvas.mpl_connect('button_press_event', onclick)
plt.show(block=True)


def onclick(event):
if event.xdata is not None and event.ydata is not None:
circle = plt.Circle((event.xdata,
event.ydata), 2, color='r')
fig = plt.gcf()
fig.gca().add_artist(circle)
plt.draw()
# Change the contents of the plt window here


if __name__ == "__main__":
plt.ion()
img = np.ones((600, 800, 3))
generate_panel(img)

关于python - pyplot : Refreshing an imshow() Window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35430060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com