Я выяснил, что создатель Qt по умолчанию использует Qt для функций OpenCV.
Когда даже запускается тестовый код (см. Ниже), который открывается и показывает поток с камеры. Здесь невозможно открыть камеру (я использую XIMEA xiQ). С нормальной вебкамерой все работает.
В Eclipse оба работают.
Краткое описание шагов, которые я сделал до сих пор:
make uninstall
для текущей установки OpenCVmake install
для нового XIMEA & Поддержка Qt включена установкаМой тестовый код:
#include "mainwindow.h"#include <QApplication>
#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char *argv[]){
QApplication a(argc, argv);
MainWindow w;
w.show();
VideoCapture cap(0);
if (!cap.isOpened()){
cout << "Cannot open the video cam" << endl;
return -1;
}
while (1){
Mat frame;
bool bSuccess = cap.read(frame);
if (!bSuccess){
cout << "Cannot read a frame from video stream" << endl;
break;
}
imshow("MyVideo", frame);
if (waitKey(30) == 27){
cout << "esc key is pressed by user" << endl;
break;
}
}
return a.exec();
}
Наконец-то я смог в этом разобраться.
Я не знаю почему (надеюсь, у кого-то будет объяснение этому поведению), но Qt Creator не всегда использует новейшую версию OpenCV.
Я обнаружил некоторые фрагменты предыдущей установки на моем компьютере, которые Qt Creator использовал вместо более новых версий библиотечных файлов.
После очистки каждого бита OpenCV и его перекомпиляции с поддержкой драйверов камер Qt и XIMEA (и других неважных вещей) все работало нормально.
Надеюсь, это поможет.