Issue with imdistline() function in MATLAB?
8 views (last 30 days)
I am trying to measure the distance two points on an image and then use that distance as an input for some other function. Here is my code:"
h = imdistline(gca);
api = iptgetapi(h);
width = api.getDistance();
When I run it, I am able to drag and get the distance I want on the image, but the distance I get from using the getDistance is some default value it started with , when it opened and it does not change , even if I change it in the image. How can the variable width have the distance i measured before I press enter or any eye and close the image.
Image Analyst on 23 Oct 2014
I ran your code on R21014b and it works just fine - exactly how you'd expect. I think you'll have to call tech support.
Roche de Guzman on 30 Jan 2021
global h; h = imdistline; % activates the fx for drawing and measuring line
global xc yc; xc = 0.3; yc = 0.1; % x and y conversion factors
setLabelTextFormatter(h,'measure'); % message
addNewPositionCallback(h,@ShowDistance); % new position callback
%% Custom fx
global h xc yc; % sets line handles and x and y conversion factors to global
X = pos(:,1)*xc; Y = pos(:,2)*yc; % converts x and y positions from px to target unit
d = norm(diff([X Y])); % distance in target unit
assignin('base','d',d); % stores in Workspace
setLabelTextFormatter(h,[num2str(d,'%.1f') ' target unit']); % updates measurement