matlabのgetline
機能を使用して写真に線を描きます。さまざまな写真では、各写真に何本の線を描く必要があるかわかりません(いくつかの写真では10本の線を描き、いくつかは写真の中身に応じて20本描く必要があります)。現在、私はコードの下に使用しています:私はforloop
を定義すると、上記のコードでは example picmatlab for "loop"をキーボード入力やマウスクリックで終了できますか?
a=imread('cameraman.jpg');
a=imshow(a)
for i=1:5
[x,y]=getline
xy=[x,y];
x1=xy(1,1);
y1=xy(1,2);
x2=xy(2,1);
y2=xy(2,2);
P1=[x1,x2];
P2=[y1,y2];
line(P1,P2);
end
を、私は多くのように線を引くことができます。ここでは写真に5行を描くことができます。私が前もって描画しなければならない線の数を知ることができないので、非常に大きな終点(例えばfor i=1:500
)を持つforloop
を定義して何度も繰り返します。しかし、もし私が私のラインで完成すれば、私はforループを終了する必要があります(間違いなく500ループ前に終了します。 !
(私はginput
に、我々は我々の仕事を終えたときに「復帰」を押すことでクリックを停止できることをPSを知っている)。
ありがとう@mhopeng。それは完全に動作します。 – Teddy
こんにちは@ mhopeng ..私は '[x、y] = getline'の代わりに 'imfreehand'関数を使用しようとしています。私のコマンドは 'h = imfreehand()'です。だから私はコードを 'h = 0; while〜isempty(h)です。 h = imfreehand();終わり。しかし、hは価値がないので、私はreturnキーを押すことで終了できません。したがって、imfreehand関数でforloopを終了するための提案。 Tks先に:) – Teddy