0

次のスクリプトでは、画像内の と コインの座標を取得し、後でプロットします。統計を使用して計算された重心 (赤で 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
4

1 に答える 1

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の番目の要素を取得しstatます。stat(k).Centroidは重心を as として抽出し、重心の座標 asおよびas[x, y]を参照できます。xstat(k).Centroid(1)ystat(k).Centroid(2)


代替改善

私が提案するコードの改善点は次のとおりです。

  • スクリプトclose allの先頭に配置します。これにより、現在開いているすべての図が閉じます
  • figure; hold on;ループの前に追加し、ループ内からfor削除します。複数回呼び出すのは冗長です。hold onforhold on;
于 2015-10-19T18:28:08.857 に答える