Azzera filtri
Azzera filtri

How to draw free-hand sketches using imfreehand ?

2 visualizzazioni (ultimi 30 giorni)
Avi Pal
Avi Pal il 4 Apr 2012
Commentato: Image Analyst il 16 Giu 2024
I have to take as input hand drawn sketches ... I have tried using imfreehand() but it completes the figures itself.
I also tried the solution provided by Doug Schwarz in http://www.mathworks.in/matlabcentral/newsreader/view_thread/30168#75552 where he coded the following :
function sketch(cmd)
if nargin == 0
cmd = 'init';
end
switch cmd
case 'init'
fig = figure('DoubleBuffer','on','back','off');
info.ax = axes('XLim',[0 1],'YLim',[0 1]);
info.drawing = [];
info.x = [];
info.y = [];
set(fig,'UserData',info,...
'WindowButtonDownFcn',[mfilename,' down'])
case 'down'
myname = mfilename;
fig = gcbf;
info = get(fig,'UserData');
curpos = get(info.ax,'CurrentPoint');
info.x = curpos(1,1);
info.y = curpos(1,2);
info.drawing = line(info.x,info.y,'Color','k');
set(fig,'UserData',info,...
'WindowButtonMotionFcn',[myname,' move'],...
'WindowButtonUpFcn',[myname,' up'])
case 'move'
fig = gcbf;
info = get(fig,'UserData');
curpos = get(info.ax,'CurrentPoint');
info.x = [info.x;curpos(1,1)];
info.y = [info.y;curpos(1,2)];
set(info.drawing,'XData',info.x,'YData',info.y)
set(fig,'UserData',info)
case 'up'
fig = gcbf;
set(fig,'WindowButtonMotionFcn','',...
'WindowButtonUpFcn','')
end
But I am not able to save the sketch being drawn or access it ..
Please help ...

Risposte (2)

Walter Roberson
Walter Roberson il 4 Apr 2012
After the sketch use
info = get(gcf, 'Userdata')
The result will be a structure with .x and .y coordinate lists.
  1 Commento
Avi Pal
Avi Pal il 8 Apr 2012
Sir, can you please elaborate a little; how can use info ? or if can save the image it will also do .

Accedi per commentare.


Image Analyst
Image Analyst il 8 Apr 2012
If you want to use imfreehand to get x,y coordinates, you can do that. Here's s snippet from my demo:
hFH = imfreehand();
% Create a binary image ("mask") from the ROI object.
binaryImage = hFH.createMask();
% Just for demo purposes, get the x,y coordinates.
% We don't use them though in this demo.
xy = hFH.getPosition;
  2 Commenti
Avi Pal
Avi Pal il 8 Apr 2012
After drawing the sketch, i have to convex hull on it, so how can access the image in it ?
Image Analyst
Image Analyst il 16 Giu 2024
You can use convhull on the (x,y) coordinates.

Accedi per commentare.

Categorie

Scopri di più su Modify Image Colors in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by