言葉のみを別のウィンドウに表示する

3 views (last 30 days)
竣 齊藤
竣 齊藤 on 30 Jan 2022
Commented: 竣 齊藤 on 31 Jan 2022
英語表記の食品成分表示表を文字認識して,成分表示表内に含まれているアレルゲンを使用して,3択の日本語を選ぶクイズを作成しています.
上記の画像が,成分表示表の画像です.
[file,path,indx] = uigetfile({'*.*'});
photo = fullfile(path,file);
img = imread(photo);
results = ocr(img);
Ninshikimoji = lower(results.Words);
Ninshikiwaku = results.WordBoundingBoxes;
Jisho = readtable('allergy1.xlsx','ReadRowNames',true);
word = categorical(Jisho.word);
Mininshiki = blanks(0);
m = 0;
for n = 1:size(Ninshikimoji,1)
if any(word == Ninshikimoji{n})
Shoukai = Jisho{Ninshikimoji{n},:};
% 追加箇所:ここから
img = insertObjectAnnotation(img,'rectangle',Ninshikiwaku(n,:),Shoukai{:},'font','Yu Gothic Bold');
%img = insertText(img,Ninshikiwaku(n,[1 2]),Shoukai{:},'font','fonts-japanese-gothic','AnchorPoint','LeftBottom');
x = Ninshikiwaku(n,1); y = Ninshikiwaku(n,2); w = Ninshikiwaku(n,3); h = Ninshikiwaku(n,4);
logo = imresize(imread([Shoukai{:} '.png']),0.3);
img(y:(y+size(logo,1)-1),(x+w):(x+w+size(logo,2)-1),:) = logo;
% 追加箇所:ここまで
m = m+1;
tango{m} = Ninshikimoji{n};
moji{m} = Shoukai;
else
Mininshiki = [Mininshiki ' ' Ninshikimoji{n}];
end
end
n = 1;
a = cell(3,1);
while n < 4
a{n} = randsample(m,1);
if n == 3
if not(a{2}==a{3} & a{1}==a{3})
break
else
n;
end
elseif n == 1
n = n+1;
elseif n == 2
if not(a{1}==a{2})
n = n+1;
else
n;
end
end
end
b = a{1};
c = a{2};
d = a{3};
n = randsample(3,1);
if n == 1
f = a{n};
elseif n == 2
f = a{n};
elseif n == 3
f = a{n};
end
answer = questdlg(tango{f}, ...
'食物アレルゲンの英単語', ...
moji{b},moji{c},moji{d},moji{f});
g = moji{f};
if answer{1,1} == g{1,1}
disp(['せいかい!'])
elseif not(answer{1,1} == g{1,1})
disp(['はずれ・・・。せいかいは、',g{1,1}])
end
今回ご教授して頂きたい点は,「せいかい」や「はずれ・・・。せいかいは、」などの最後の言葉をコマンドウィンドウではなく,別のウィンドウを開いて表示させたいと考えています.
ご教授の程,よろしくお願いいたします.
  2 Comments
竣 齊藤
竣 齊藤 on 31 Jan 2022
メッセージを使用したら,上手く出来ました.
ご教授して頂き,ありがとうございます.

Sign in to comment.

Accepted Answer

Hernia Baby
Hernia Baby on 30 Jan 2022
msgbox で解決できます。
例を示します。以下コピペでお願いします。
clc,clear
A = ["正解!";"間違い!"];
% 正解か間違いかランダムで表記
ii = randi(2,1);
% 間違いの場合は以下の分加える
answer = "ブドウ";
if ii == 2
A(ii) = A(ii) + sprintf("\n正解は%sでした",answer);
end
f = msgbox(sprintf('%s',A(ii)));
  1 Comment
竣 齊藤
竣 齊藤 on 31 Jan 2022
実行できました.
ご教授して頂き,ありがとうございます.

Sign in to comment.

More Answers (0)

Tags

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!