我有一个我在 Xcode 中编写的命令行 openCV 程序,它打开两个 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 中?
注意这是 Qt GUI 的样子:
用户使用相关按钮选择两个 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);