Xcodeで記述したコマンドラインopenCVプログラムがあり、2つのXMLファイルを開き、分析して比較します。ただし、出力を理解しやすくするために、QtCreatorを使用してそのプログラムをGUIに配置しようとしています。
問題は、Qtがcv::FileStorageを好まないようだということです。プログラムは正常にコンパイルされますが、実際にOpenCV部分を実行しようとすると、クラッシュして次のエラーが発生します。
OpenCVエラー:cvOpenFileStorageのヌルポインター(NULLまたは空のバッファー)、ファイル/tmp/OpenCV-2.4.3/modules/core/src/persistence.cpp、行2702 Qtは、イベントハンドラーからスローされた例外をキャッチしました。イベントハンドラからの例外のスローは、Qtではサポートされていません。QApplication :: notify()を再実装し、そこですべての例外をキャッチする必要があります。
プログラムが予期せず終了しました。
Qtがこのプログラムを実行するのを好まないように見える理由を誰かが知っていますか?または、OpenCVプログラムをQtプログラムにきれいに統合できる方法がある場合はどうでしょうか。
注意:QtGUIは次のようになります。
ユーザーは、関連するボタンを使用して2つのXMLファイルを選択します。これらのファイルへのパスが保存され、ボタンの横のボックスに表示されます。次に、以下を使用してQStringsをstd::stringsに変換します。
std::string file1path = file1Name.toUtf8().constData();
std::string file2path = file2Name.toUtf8().constData();
次に、file1pathとfile2pathが次のようにcv::FileStorageコマンドに渡されます。
//Create File Storage
FileStorage storage1;
storage1.open(file1path, FileStorage::READ);
FileStorage storage2;
storage2.open(file2path, FileStorage::READ);