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