添加质心到绘图 - Matlab

时间:2015-10-19 18:18:07

标签: matlab plot centroid

在下面的脚本中,我得到图像中的坐标和硬币,然后绘制它们。我怎样才能在图中添加使用stat计算的质心(红色,标记为X)?

脚本:

clc;
clear;
I = imread('coins.png');
imshow(I)
BW = im2bw(I);


BW_filled = imfill(BW,'holes');
stat = regionprops(BW_filled,'centroid');
boundaries = bwboundaries(BW_filled);

for k=1:10
    b = boundaries{k};
    plot(b(:,2),b(:,1),'g','LineWidth',3);
    hold on;
end

1 个答案:

答案 0 :(得分:4)

添加

plot(stat(k).Centroid(1), stat(k).Centroid(2), 'rx');

plot(b(:,2), b(:,1), 'g', 'LineWidth', 3);
hold on;

您还可以将任何其他自定义应用于质心点,例如

plot(stat(k).Centroid(1), stat(k).Centroid(2), 'rx', 'LineWidth', 3);

解释

stat(k)将获得k的{​​{1}}元素。 stat会将质心提取为stat(k).Centroid,然后我们可以将质心的[x, y]坐标引用为x,将stat(k).Centroid(1)引用为y

替代改进

我建议您对代码进行一些改进

  • stat(k).Centroid(2)放在脚本的顶部。这将关闭所有当前打开的数字
  • close all循环之前添加figure; hold on;,然后从for循环中删除hold on。多次调用for是多余的。
相关问题