# Issue with imdistline() function in MATLAB?

조회 수: 8(최근 30일)
Eric Nunes 2014년 10월 22일
답변: Roche de Guzman 2021년 1월 30일
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:"
if true
figure, imshow(I);
h = imdistline(gca);
api = iptgetapi(h);
width = api.getDistance();
end
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.
Eric
##### 댓글 수: 1표시숨기기 없음
Brett Barnes 2016년 4월 22일
Are you right clicking the line to open the context menu? There's an option there to "Export to Workspace"

댓글을 달려면 로그인하십시오.

### 답변(2개)

Image Analyst 2014년 10월 23일
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.
##### 댓글 수: 0표시숨기기 이전 댓글 수: -1

댓글을 달려면 로그인하십시오.

Roche de Guzman 2021년 1월 30일
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
function ShowDistance(pos)
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
end

댓글을 달려면 로그인하십시오.

### 범주

Find more on Build Interactive Tools in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by