対話型プログラム内で​誤操作をした時に処理​をやり直す方法はあり​ますか

2 views (last 30 days)
Astro boy
Astro boy on 6 Jul 2021
Commented: Astro boy on 7 Jul 2021
現在,対話型のプログラムを作成しています.具体的な処理は画像を表示させてその画像をクリックしてピクセル値を読み取るといったものです.
プログラムの簡易的な例
figure
hIm=imshow(img); % 画像表示
[xi,yi] = getpts;%クリックでピクセル値取得
このプログラムに,誤って操作してしまった場合に画像の表示からやり直す処理を追加したいのですが何かいい方法はないでしょうか.解答よろしくお願いいたします.
  1 Comment
Atsushi Ueno
Atsushi Ueno on 6 Jul 2021
手続き型でも可能ですが、イベント駆動で分かり易いプログラム構成にすべきです。
また「関数 getpts は推奨されません」との指摘もありますし、AppDesignerとの親和性も考慮すると、getptsから下記drawpointに切り替えるべきだと思います。こちらを試しては如何でしょう。(Image Processing Toolboxを持っておらず動作確認出来ません)

Sign in to comment.

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 6 Jul 2021
Edited: Atsushi Ueno on 6 Jul 2021
下記ツールを使って、ユーザがピクセルを選択⇒YES回答するまで繰り返す処理を追加すれば良いと思います。
img = uint8(randi([0 255],[100 100 3])); % 仮の画像データ
figure
hIm=imshow(img); % 画像表示
answer = true;
while answer
[xi,yi] = getpts; % クリックでピクセル値取得
answer = questdlg('本当にそこですか?','ピクセル値取得','No');
switch answer
case 'Yes'
answer = false;
case 'No'
answer = true;
case 'Cancel'
answer = true;
end
end
  1 Comment
Astro boy
Astro boy on 7 Jul 2021
解答ありがとうございます.正常に動作確認できました.またgetptsは推奨されていないということ,手続き型ではなくイベント駆動での作成を推奨とのことですので,App Desinerで作成,drawpointを用いて作成したいと思います.
App Designerでの作成は初めてで,よくわからない部分があると思うので質問した時はまた解答よろしくお願いいたします.ありがとうございました.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!