6

为了摆脱 IDL 和 Matlab,我正在探索我需要在 python/scipy 等中实现什么样的工具。一个共同的特点是显示医学图像和勾勒出感兴趣的区域(例如,IDL 中的 defroi 或者它的 GIU 版本,xroi)。在 chaco 和 matplotlib 中,有一些 LassoSelection 工具的例子很接近,但并不完全适合我的需要(我想点击多边形而不是拖动光标)。

是否有现有的工具可以做到这一点,或者我是否需要扩展和自定义现有的类?无论哪种情况,正确方向的指针都会有所帮助。

4

4 回答 4

7

似乎 matplotlib 在拍摄包含感兴趣区域绘图等功能的交互式数据可视化时不太适合。虽然当然它确实处理事件处理等。

到目前为止,我能想到的最好的结果就是以guiqwt的名义做出了令人印象深刻的努力。它基于PyQwt,另外还有相当多的(相当容易满足的)依赖项列表。快速浏览一下他们的图像可视化测试示例,可以看到一个方便的工具集。安装和运行这些示例很容易。时间会证明融入我自己的工作是多么容易。

于 2011-04-05T23:32:22.650 回答
4

现在 matplotlib 有一个很好的小部件,叫做“LassoSelector”,它使免费的多边形绘制变得非常容易。

此处的示例代码:http: //matplotlib.org/examples/widgets/lasso_selector_demo.html

我的简约版:

from pylab import *
from matplotlib.widgets import LassoSelector

fig, ax = plt.subplots()
ax.imshow(np.random.randint(0,255,(255,255)), cmap='gray')

def onselect(verts):
    print verts

lasso = LassoSelector(ax, onselect)

subplots_adjust(left=0.1, bottom=0.1) 
于 2014-04-22T15:48:38.390 回答
3

我认为您可能可以为此目的使用 PyQTGraph,https: //launchpad.net/pyqtgraph 。我只很少使用它,因为它的固有选项比 matplotlib 少,但它非常快,并且它确实有一些内置小部件可用于您感兴趣的 ROI 选择。您可能会发现自己在构建自定义但是,绘制将 matplotlib 与 PyQTGraph 合并的例程,如果格式不同等可能会导致头痛。它可能会导致更多的簿记,但可能会解决您的问题。

于 2011-02-22T22:36:53.170 回答
1

jdoepfert 提供了一个很好的工具,可以完全按照您的要求在github上找到。我的机器上的性能有点慢,但如果你把它注释掉,motion_notify_event它就像一个魅力。

于 2017-04-05T16:41:15.843 回答