from matplotlib.widgets import Lasso It might not of made the last release. http://svn.sourceforge.net/viewvc/matplotlib/trunk/matplotlib/lib/matplotlib/widgets.py?revision=2583&view=markup
On 8/7/06, Daniel Kornhauser <[EMAIL PROTECTED]> wrote: > Hey guys: > > Charlie I did not find your lasso example so I cooked up mine, I attach it. > Can you give me the file name that contains the new Lasso widget for > "doodling" ? > > This is just the start of the lasso or "region of interest" widget I > still have to : > - fill the region with a color > - make it work with layers > - add methods that return the pixel region or the contour coordinates > - make a nice class > > If anybody has made such a widget I would love to see the code, I hate > reinventing the wheel. > > If there is not such an example such as the lasso tool, can my example > be added to the examples ? > What is the process ? > > Anyway, I can't believe there is not such a widget, I thought there must > be some people that use matplotlib for Digital Image Processing ? > Isn't there ? > > Any critique on my code would be appreciated, I have never programed > with matplotlib ... > > > Daniel. > > > > > Charlie Moad wrote: > > On 8/4/06, Daniel Kornhauser <[EMAIL PROTECTED]> wrote: > >> Hi: > >> > >> Just stared playing with matplotlib, I want to draw a polygon on top of > >> an image to select a region of interest in the image. > >> Does anybody have any example or advice on how to interactively draw a > >> polygon with the mouse by placing it's vertices's one click at a time ? > >> Another case that I have would be just to fill a region with a thick > >> line, searched for a "doodle example" or a "paint example" but could not > >> find them, any advice would be appreciated too. > > > > Look in at the widget examples. There is a new Lasso widget for > > "doodling" and a RectangleSelector. > > > > - Charlie > > > > #!/usr/bin/env python > """ > This example shows how to use matplotlib to create regions of interest. > I has two modes: > - the segment mode, each time you click the mouse you can create a line > segment > - the free hand mode, by keeping pressed the right button you can create > a iregular contour > The right button closes the loop. > Daniel Kornhauser > """ > from pylab import * > > class ROI: > > def __init__(self, ax, fig): > self.previous_point = [] > self.start_point = [] > self.end_point = [] > self.line = None > > self.fig = fig > self.fig.canvas.draw() > > def motion_notify_callback(self, event): > if event.inaxes: > ax = event.inaxes > x, y = event.xdata, event.ydata > if event.button == None and self.line != None: # Move line around > self.line.set_data([self.previous_point[0], x], > [self.previous_point[1], y]) > self.fig.canvas.draw() > elif event.button == 1: # Free Hand Drawing > line = Line2D([self.previous_point[0], x], > [self.previous_point[1], y]) > ax.add_line(line) > self.previous_point = [x, y] > self.fig.canvas.draw() > > > def button_press_callback(self, event): > if event.inaxes: > x, y = event.xdata, event.ydata > ax = event.inaxes > if event.button == 1: # If you press the right button > if self.line == None: # if there is no line, create a line > self.line = Line2D([x, x], > [y, y], > marker = 'o') > self.start_point = [x,y] > self.previous_point = self.start_point > ax.add_line(self.line) > self.fig.canvas.draw() > # add a segment > else: # if there is a line, create a segment > self.line = Line2D([self.previous_point[0], x], > [self.previous_point[1], y], > marker = 'o') > self.previous_point = [x,y] > event.inaxes.add_line(self.line) > self.fig.canvas.draw() > > elif event.button == 3 and self.line != None: # close the loop > self.line.set_data([self.previous_point[0], > self.start_point[0]], > [self.previous_point[1], > self.start_point[1]]) > ax.add_line(self.line) > self.fig.canvas.draw() > self.line = None > > def main(): > fig = figure() > ax = fig.add_subplot(111) > ax.set_title(" left click: line segment left pressed: doodle > right click: close region") > cursor = ROI(ax, fig) > fig.canvas.mpl_connect('motion_notify_event', > cursor.motion_notify_callback) > fig.canvas.mpl_connect('button_press_event', cursor.button_press_callback) > show() > > if __name__ == "__main__": > main() > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > _______________________________________________ > Matplotlib-users mailing list > Matplotlib-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > > ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users