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