Borrar filtros
Borrar filtros

How to display a polygon and its centroid

3 visualizaciones (últimos 30 días)
ISABELLE GUNDRUM
ISABELLE GUNDRUM el 7 de Mzo. de 2022
Respondida: yanqi liu el 8 de Mzo. de 2022
I am using this code to draw polygons on an image, but I am unsure of how to later display the drawn polygon and centroid on the image. Any suggestions?
My code:
for k=1:3
c{k} = zeros(1,3);
end
for k = 1:3
tmp = input(['Press any key to draw Polygon # ' int2str(k) ': ']);
close all, imshow(I), title(['Polygon # ' int2str(k)])
h = drawpolygon;
% The vertices of k-th polygon is recorded in polyin{k}
polyin{k} = polyshape(h.Position); % create a polygon object
[cx,cy] = centroid(polyin{k});
c{k}(1:2) = round([cx cy],0); % unit: pixels
c{k}(3) = round(area(polyin{k}),0)*p2cm; % unit: cm^2
if k==3
tmp = input('Press any key to complete.')
end
disp(['Centroid of polygon: [' int2str([cx cy]) ']'])
disp(['Area of polygon = ' int2str(c{k}(3)) 'cm^2'])
end
Thanks!

Respuesta aceptada

Matt J
Matt J el 7 de Mzo. de 2022
Editada: Matt J el 7 de Mzo. de 2022
close all, imshow(I),
for k = 1:3
title(['Polygon # ' int2str(k)]);
h = drawpolygon;
wait(h);
centroid=mean(h.Position);
drawpoint('Position',centroid,'Label','Centroid');
end

Más respuestas (1)

yanqi liu
yanqi liu el 8 de Mzo. de 2022
I = imread('cameraman.tif');
p2cm = 1;
for k=1:3
c{k} = zeros(1,3);
end
for k = 1:3
tmp = input(['Press any key to draw Polygon # ' int2str(k) ': ']);
close all, imshow(I), title(['Polygon # ' int2str(k)])
h = drawpolygon;
% The vertices of k-th polygon is recorded in polyin{k}
polyin{k} = polyshape(h.Position); % create a polygon object
[cx,cy] = centroid(polyin{k});
c{k}(1:2) = round([cx cy],0); % unit: pixels
c{k}(3) = round(area(polyin{k}),0)*p2cm; % unit: cm^2
if k==3
tmp = input('Press any key to complete.')
end
disp(['Centroid of polygon: [' int2str([cx cy]) ']'])
disp(['Area of polygon = ' int2str(c{k}(3)) 'cm^2'])
pts = [h.Position; h.Position(1,:)];
delete(h);
hold on; plot(pts(:,1), pts(:,2), 'r.-', 'LineWidth',3);
plot(mean(pts(:,1)), mean(pts(:,2)), 'cp', 'MarkerFaceColor', 'c');
hold off;
end

Categorías

Más información sobre Elementary Polygons en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by