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

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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu コンピューター ビジョンと Simulink finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!