歯を検出後に、if文を使ってメッセージを表示する

1 visualización (últimos 30 días)
竣 齊藤
竣 齊藤 el 5 de Mayo de 2021
Comentada: 竣 齊藤 el 15 de Mayo de 2021
【目と口と歯を検出する→もし、目と口と歯を検出したらメッセージを表示しない→もし、目と口は検出され歯を検出できなかったら、「Hello world」とメッセージを表示する】というif文を用いたプログラムを作成したいのですが、歯を検出するプログラムの作成の時点でつまづいてしまいました。
わかる方がいらっしゃいましたら、ご教授頂けると幸いです。
  1 comentario
Kojiro Saito
Kojiro Saito el 6 de Mayo de 2021
分岐処理のif、else、elseifを使うと良さそうですが、目と口と歯の検出でどのようなプログラムを書いていて、具体的にどこでつまづいているのかをシェアいただければ、的確に回答しやすくなります。

Iniciar sesión para comentar.

Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 10 de Mayo de 2021
何かを検出するプログラムの内容は不明ですが、if文の使用方法については下記のように回答できます。
検出結果が「検出した」と「検出できなかった」の2通りの場合、2の3乗=8通りの組み合わせがあります。
その8通りをそのままif文で愚直に判断していけば、全ての組み合わせを判断できます。
% eyes = detect_eyes(); % eyesは目の検出結果で、TrueかFalseの2値を持つブール型とします
% mouth = detect_mouth(); % mouthは口の検出結果で、TrueかFalseの2値を持つブール型とします
% teeth = detect_teeth(); % teethは歯の検出結果で、TrueかFalseの2値を持つブール型とします
eyes = true; % とりあえず仮定します
mouth = true; % とりあえず仮定します
teeth = false; % とりあえず仮定します
if (eyes && mouth && teeth)
disp(''); %→もし、目と口と歯を検出したらメッセージを表示しない
elseif (eyes && mouth && ~teeth) % ~(チルダ記号)はNOT(真偽の反転)を意味します
disp('Hello world'); %→もし、目と口は検出され歯を検出できなかったら、「Hello world」とメッセージを表示する
elseif (eyes && ~mouth && teeth) %
disp('目と歯は検出され口を検出できなかった');
elseif (eyes && ~mouth && ~teeth) %
disp('目は検出され口と歯を検出できなかった');
elseif (~eyes && mouth && teeth) %
disp('口と歯は検出され目を検出できなかった');
elseif (~eyes && mouth && ~teeth) %
disp('口は検出され目と歯を検出できなかった');
elseif (~eyes && ~mouth && teeth) %
disp('歯は検出され目と口を検出できなかった');
else % 残りはif(~eyes && ~mouth && ~teeth)だけなので省略
disp('目と口と歯の全てを検出できなかった');
end
上記の例では、目と口は検出され歯を検出できなかった場合なので「Hello world」とメッセージを表示します。
上記プログラムの様に毎回3つの条件を全て書けば、不要な条件の組み合わせを除いても正しく動作します。
しかしながらif-else文で上記の様に書くとプログラムが煩雑になるので、3つのブール値を数値に変換してSwitch文で処理するなど工夫すればよりスッキリした形になります。
if文の中に「検出するプログラム」を書くと煩雑になるので、上記のようにそれぞれを検出するプログラムを関数に分けて書けばよりスッキリした形になります。
  2 comentarios
Atsushi Ueno
Atsushi Ueno el 10 de Mayo de 2021
的外れな回答だったら申し訳ありません。近いタイミングで類似の質問が出ていたのでリンクを貼っておきます。イメージラベラーを利用して目,口,歯を検出した時に文を表示する方法 - MATLAB Answers - MATLAB Central (mathworks.com)
竣 齊藤
竣 齊藤 el 15 de Mayo de 2021
ご回答していただき、ありがとうございます。
参考にさせていただきます。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre 測定と特性抽出 en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!