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 <kornhauser@...1209...> 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
matplotlib-users List Signup and Options