我需要使用matplotlib函数ginput()在图中定义一个区域。然而,由于它是一个不规则的形状,并且在每个地块中都是不同的,所以我不能预先定义有多少个点,即
x = randn(10,10)
imshow(x)
n = I don't know yet
points = ginput(n)有人知道该怎么做吗?谢谢,戴夫
发布于 2012-06-08 17:58:42
从文档,即help(ginput),
自输入ginput(
、n=1、timeout=30、show_clicks=True、mouse_add=1、mouse_pop=3、mouse_stop=2)
与图形交互的阻塞调用。
这将等待用户的n次点击,并返回每次点击的坐标列表。
如果超时为零或负,则不会超时。
如果n为零或负,则累积单击次数,直到单击鼠标中键(或同时单击两个鼠标按键)终止输入。
单击鼠标右键可取消上次输入。
可以通过参数*mouse_add*、*mouse_pop*和*mouse_stop*重写用于各种操作(添加点、移除点、终止输入)的按钮,这些参数提供了相关的鼠标按钮:1代表左,2代表中间,3代表右。
如果您的鼠标没有一个或多个按钮,键盘也可用于选择点。delete和backspace键的作用类似于右击(即删除最后一个点),Enter键终止输入,任何其他键(窗口管理器尚未使用)选择一个点。
我们可以设置ginput n=0等待鼠标中键点击,而不是一定数量的点数。我们可以设置n=0让ginput等待鼠标中键点击,而不是一定数量的点。
额外的好处:设置timeout=0会阻止ginput在默认的30秒后退出。对于复杂的情节,我觉得这很烦人。
示例代码:
import pylab
x = randn(10,10)
imshow(x)
points = ginput(0, 0)
# Select the points defining your region from the
# plot then middle click to terminate ginput.https://stackoverflow.com/questions/10919051
复制相似问题