C で記述され、OpenCV を使用する外部プログラムに依存する Matlab のツールボックスを使用する必要があります。Ubuntu 14.04 64 ビットと Matlab R2014b を使用しています。
m-script はsystem関数を使用してこれを呼び出し、C プログラムの実行後に、C プログラムが生成する出力ファイルを読み取ります。これは起こりません。ファイルが生成されていないことがわかりました。
それから、私が最初にしたことは、C プログラムが正常に動作しているかどうかを確認することでした。これは、m-script が呼び出しに使用したのと同じパラメーターを使用して、ターミナルで直接呼び出すことによって行いました。その後、機能し、ファイルが生成されました。したがって、C プログラムは正しく機能しています。
Matlab に戻ると、また失敗しました。次に、C プログラムのデバッグを開始したところ、Matlab から呼び出されたときに、OpenCV 関数 cvLoadImage がファイルを開くことができないことがわかりました。外で呼び出すとうまくいきます。
Matlab と外部の両方で実行されている関数に渡される文字列を確認しましたが、厳密には同じですが、Matlab の呼び出しは失敗します。ldconfig -p |で確認しました。Matlab コマンド ウィンドウからgrep opencvを実行すると、ライブラリが表示されます。さらに面白いことに、問題のある関数の前に、他の ocv 関数への呼び出しが行われています。これだけで失敗。
問題は、これは私の部分の設定ミスの問題ですか、それとも Matlab のバグですか?
前もって感謝します。
編集
実際、システムコールにsudoを追加してMatlab 内から呼び出すと、ジョブが完了しました。フォルダー全体の最後のリソースとしてchmod 777 -Rfを使用し、ユーザーがフォルダーと Matlab プロセスの両方の所有者であることを確認したためです。奇妙なことですが、スクリプトを使用するたびにパスワードを入力しなければならないのはまだ気になりますが、スケジュールがタイトなので、この回避策で十分だと思います。