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

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 CenterFile Exchange 中查找有关 コンピューター ビジョンと Simulink 的更多信息

Community Treasure Hunt

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

Start Hunting!