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

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

サインインしてコメントする。

採用された回答

Atsushi Ueno
Atsushi Ueno 2021 年 7 月 6 日
編集済み: Atsushi Ueno 2021 年 7 月 6 日
下記ツールを使って、ユーザがピクセルを選択⇒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 件のコメント
Astro boy
Astro boy 2021 年 7 月 7 日
解答ありがとうございます.正常に動作確認できました.またgetptsは推奨されていないということ,手続き型ではなくイベント駆動での作成を推奨とのことですので,App Desinerで作成,drawpointを用いて作成したいと思います.
App Designerでの作成は初めてで,よくわからない部分があると思うので質問した時はまた解答よろしくお願いいたします.ありがとうございました.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeコンピューター ビジョンと Simulink についてさらに検索

Community Treasure Hunt

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

Start Hunting!