添加质心绘图 - Matlab

Add centroid to plot - Matlab

在下面的脚本中,我获取图像中的坐标和硬币,然后绘制它们。我怎样才能将使用 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

添加

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) 将得到 stat 的第 k 个元素。 stat(k).Centroid 会将质心提取为 [x, y],然后我们可以将质心的 x 坐标引用为 stat(k).Centroid(1),将 y 坐标引用为 stat(k).Centroid(2)


替代改进

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

  • close all 放在脚本的顶部。这将关闭所有当前打开的图形
  • for 循环之前添加 figure; hold on; 并从 for 循环中删除 hold on。多次调用 hold on; 是多余的。