2017-05-29 10 views
1

imline(Image Processing Toolbox)がwaitコマンドでMATLAB 2017aでどのように動作するかを調べようとしています。 私は簡単な例を作成しました。コードは機能しますが、ユーザー操作によっては失敗します。複数のimlineとMATLABでの待機

imlineを使用して2行をトレースしたいとします。 waitコマンドを使用すると、プログラムを再開する前に行の位置を変更できます。 最初のトレースを実行した後、ダブルクリックして位置を確認し、次に右クリックしてメニューを表示してトレースを削除します。 もう一度imlineを使用すると、新しい行をトレースしますが、エラーが発生します。 (imlineサブファンクション内の不良ハンドル)

ここは私のコードです。

ha = axes; 
hl = imline(ha); 
wait(hl); 
hl2 = imline(ha); 
wait(hl2); 

imlineの2番目の呼び出しは、最初の呼び出しに影響してはなりません。 imlineに問題はありますか?

N.B:位置を確認するためにダブルクリックしないと、正常に動作します。

+1

私は2017aを使用しています。エラーは、最初のトレースをダブルクリックした後に削除する場合にのみ発生します。 2行目をトレースしようとすると、無効なハンドルエラーメッセージがコマンドウィンドウに表示されます。 – oro777

+1

なぜ 'wait'コマンドを追加する必要がありますか?それがなくても、線を描いた後でも必要なだけ線を編集することができます。 – EBH

+0

あなたは正しいです、私はそれを必要としないかもしれません。あなたが書いたように、私は2本の線をたどってから私の線を編集することができます。 – oro777

答えて

1

OPがコメントに書いているので、2行目の描画を開始した後に最初の行を削除するとエラーが発生します(つまり、カーソルは+に再度設定されます)。

このエラーはwaitコマンドとは関係ありません。偶数次のコードでエラーがapears:

ha = axes; 
hl = imline(ha); 
% try to delete the first line before drawing the second 
hl2 = imline(ha); 

(カーソルが+に設定されている、すなわち)別のラインを描きながらユーザが行を削除してはなりません。

ただし、ユーザーは作成した行を編集できるため、この機能は本当に必要ありません。ユーザーは、行を描き、望むように編集することができます。

新しい行を描画する前に行を削除できるようにする場合は、waitを追加することができますが、ユーザーは確認しない限り最初の行を削除できます(ダブルクリックします) 。

関連する問題