GUIアプリの中で、ウェブカメラの不具合について

4 views (last 30 days)
Ibuki Takahashi
Ibuki Takahashi on 14 Jul 2021
Commented: Atsushi Ueno on 27 Jul 2021
matlabで、GUIアプリの作成を行っております。
ウェブカメラを搭載し、カメラから出力した画像を処理するプログラムを作成しました。
AppDesignerでは、正常に動作し、アプリケーションコンパイラーを用いて、アプリを作成しました。
しかし、作成したアプリケーションでは、カメラが全く動作しませんでした。
原因が全く分からないため、教えていただけますと幸いです。
よろしくおねがいします。
  6 Comments
Kenta
Kenta on 17 Jul 2021
GUIを作成するときとはちがう状況なのですが、私の場合はこのような形でサポートパッケージを含める画面が出てくるのでそれに関連するかもしれません。何かに役立てば幸いです。
Ibuki Takahashi
Ibuki Takahashi on 27 Jul 2021
たくさんのコメントありがとうございました。とても有意義な回答のおかげで、問題を解決することができました。
できれば、一番参考になりました、こちらのコメントをベストアンサーにさせていただきたいと考えております。
よろしければ、回答のほうに移動していただいてもよろしいでしょうか。

Sign in to comment.

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 27 Jul 2021
Error when running compiled application: Undefined function ’webcammex' - MATLAB Answers - MATLAB Central (mathworks.com): エラーメッセージで検索して見つかった類似の質問と、神回答者イメージアナリスト氏の回答があったので下記に回答の訳を示します
@Image Analyst's Answer in Japanese
今日この問題が発生したので、その解決方法を紹介します。 GUIアプリが
webcamlist
を実行した時点で「関数または変数 'webcammex' が認識されません。」というエラーが発生しました。通常、開発環境でこのコマンドを実行すると、次のような結果になります。
>> webcamlist
ans =
1×1 cell array
{'Integrated Webcam'}
つまり開発環境ではWebカメラが動作しましたが、コンパイルしたスタンドアロンのWindows実行ファイルでは動作しませんでした。必要なサポートパッケージをインストールしていたにもかかわらずです。では、この問題を解決する方法を説明します。
まず、ツールリボンの「ホーム」タブから「アドオン\アドオンの入手」を選択して、サポートパッケージがインストールされていることを確認します。
「MATLAB Support Package for USB Webcams」をインストールします。
さて、ここで予想外のことが起こりました(技術サポートに電話しなければならなかった理由でもあります)。 ツールボックス関数とは異なり、サポートパッケージ関数は、コンパイル時に自動的に検出され、関数に組み込まれることはありません。 mcc関数/コマンドの'-a'オプションで特別に追加する必要があります。 というわけで、基本的には次のような方法で動作するようになりました(技術サポートと20分ほどいろいろ試した後やっと)
mFileName = 'my_webcam_app.m'; % か何か。貴方のm-file名に合わせて変更してください
outputFolder = 'C:\My MATLAB Executables'; % コンパイルした"my_webcam_app.exe"の在り処にしてください
fprintf('%s 現在 %s アプリのコンパイル開始...\n', datestr(now), mFileName);
tic;
% コンパイルの準備が整いました
% その前に、下記のR2020aを、ご使用のリリース名に合わせて変更してください
mcc('-m', mFileName, '-d', outputFolder, '-a', 'C:\ProgramData\MATLAB\SupportPackages\R2020a\toolbox\matlab\webcam\supportpackages');
% コンパイル完了。 完了したことと、コンパイルにかかった時間を開発者に伝えます
elapsedSeconds = toc;
minutes = int32(floor(elapsedSeconds / 60));
seconds = elapsedSeconds - 60 * double(minutes);
message = sprintf('%s 現在 %s アプリのコンパイルが完了しました。%d 分と %.1f 秒掛かりました。\n', datestr(now), mFileName, minutes, seconds);
fprintf('%s\n', message);
msgboxw(message);
詳細については、技術サポートから入手したドキュメントのリンクを参照してください。
これは私が言及した資料で、コンパイルされたアプリケーションにサポートパッケージを含める方法について説明しています。
これで、コンパイル済のWebカメラアプリケーションを動作させるのに役立つことを願っています。 役に立った場合は、私の回答の一番上にある投票ボタンをクリックしてください。
  1 Comment
Atsushi Ueno
Atsushi Ueno on 27 Jul 2021
本回答は類似質問の回答の翻訳です。従って「私の回答の一番上にある投票ボタンをクリックしてください」とは本回答の事ではなく、下記リンク先の回答の事です。投票したげてくださいね。

Sign in to comment.

More Answers (0)

Categories

Find more on MATLAB Compiler in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!