Имам програма за команден ред openCV, която написах в Xcode, която отваря два XML файла, анализира и след това ги сравнява. Сега обаче се опитвам да поставя тази програма в GUI с помощта на 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?
N.B. Ето как изглежда 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);