Question

Dans un effort pour m'éloigner d'IDL et MATLAB, j'explore le type d'outils que je dois mettre en œuvre dans Python / Scipy et al. Une caractéristique commune consiste à afficher des images médicales et des régions d'intérêt (par exemple Defroi dans IDL ou, c'est la version giu, xroi). Dans Chaco et Matplotlib, il existe des exemples de l'outil de lassoselection qui se rapproche mais qui ne convient pas à mes besoins (je voudrais cliquer sur cliquez sur un polygone plutôt que de faire glisser un curseur).

Y a-t-il des outils existants qui peuvent faire cela ou devrais-je étendre et personnaliser les classes existantes? Dans les deux cas, les pointeurs dans la bonne direction seraient utiles.

Était-ce utile?

La solution

Je pense que vous pourriez être en mesure d'utiliser pyqtgraph à cet effet, https://launchpad.net/pyqtgraph. Je ne l'ai utilisé que par avec parcimonie, car il a moins d'options innées que Matplotlib, mais il est assez rapide et il a des widgets intégrés pour le type de sélection de retour sur investissement qui vous intéresse. Le traçage des routines qui fusionnent Matplotlib avec pyqtgraph, cependant, qui peuvent provoquer des maux de tête si les formats sont différents, etc. Cela peut conduire à plus de comptabilité, mais peut résoudre votre problème.

Autres conseils

Il semble que le matplotlib ne convient pas au tir pour les données interactives vsiualisation qui inclut des fonctionnalités telles que le dessin de la région d'intérêt. Bien que bien sûr, il traite de la gestion des événements, etc.

Le meilleur que je puisse trouver jusqu'à présent est un effort impressionnant sous le nom de guiqwt. C'est basé sur Pyqwt et a en outre toute une liste de dépendances (assez faciles à satisfaire). Un rapide coup d'œil à leur Tester des exemples de visualisation de l'image Affiche un ensemble d'outils pratique sur lequel s'appuyer. Il était facile à installer et à exécuter ces exemples. Le temps dira à quel point il est facile de s'intégrer dans mon propre travail.

Maintenant, Matplotlib a un joli widget appelé "lassoselector" qui a rendu le dessin de polygone gratuit très facile.

Exemple de code ici:http://matplotlib.org/examples/widgets/lasso_selector_demo.html

Ma version minimaliste:

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) 

Il y a un bel outil qui fait exactement ce que vous voulez par JDoEpfert disponible sur github. Les performances étaient un peu lentes sur ma machine, mais si vous commentez le motion_notify_event il fonctionne comme un charme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top