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

現在,対話型のプログラムを作成しています.具体的な処理は画像を表示させてその画像をクリックしてピクセル値を読み取るといったものです.
プログラムの簡易的な例
figure
hIm=imshow(img); % 画像表示
[xi,yi] = getpts;%クリックでピクセル値取得
このプログラムに,誤って操作してしまった場合に画像の表示からやり直す処理を追加したいのですが何かいい方法はないでしょうか.解答よろしくお願いいたします.

1 comentario

Atsushi Ueno
Atsushi Ueno el 6 de Jul. de 2021
手続き型でも可能ですが、イベント駆動で分かり易いプログラム構成にすべきです。
また「関数 getpts は推奨されません」との指摘もありますし、AppDesignerとの親和性も考慮すると、getptsから下記drawpointに切り替えるべきだと思います。こちらを試しては如何でしょう。(Image Processing Toolboxを持っておらず動作確認出来ません)

Iniciar sesión para comentar.

 Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 6 de Jul. de 2021
Editada: Atsushi Ueno el 6 de Jul. de 2021

1 voto

下記ツールを使って、ユーザがピクセルを選択⇒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 comentario

Astro boy
Astro boy el 7 de Jul. de 2021
解答ありがとうございます.正常に動作確認できました.またgetptsは推奨されていないということ,手続き型ではなくイベント駆動での作成を推奨とのことですので,App Desinerで作成,drawpointを用いて作成したいと思います.
App Designerでの作成は初めてで,よくわからない部分があると思うので質問した時はまた解答よろしくお願いいたします.ありがとうございました.

Iniciar sesión para comentar.

Más respuestas (0)

Preguntada:

el 6 de Jul. de 2021

Comentada:

el 7 de Jul. de 2021

Community Treasure Hunt

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

Start Hunting!