У меня есть программа openCV командной строки, которую я написал в Xcode, которая открывает два файла XML, анализирует и затем сравнивает их. Однако сейчас я пытаюсь поместить эту программу в графический интерфейс, используя QtCreator, чтобы упростить понимание вывода.
Проблема в том, что Qt не нравится cv::FileStorage. Программа компилируется нормально, но когда я на самом деле пытаюсь выполнить часть OpenCV, она падает, выдавая эту ошибку:
Ошибка OpenCV: нулевой указатель (NULL или пустой буфер) в cvOpenFileStorage, файл /tmp/OpenCV-2.4.3/modules/core/src/persistence.cpp, строка 2702. Qt перехватил исключение, созданное обработчиком событий. Генерация исключений из обработчика событий не поддерживается в Qt. Вы должны переопределить QApplication::notify() и перехватить там все исключения.
Программа неожиданно завершилась.
Кто-нибудь знает, почему Qt не нравится запускать эту программу? Или есть способ, которым я могу чисто интегрировать программу OpenCV в программу Qt?
Н.Б. Вот как выглядит графический интерфейс Qt:
Пользователь выбирает два файла 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);