OpenCV не может открыть камеру с помощью Qt

Я выяснил, что создатель Qt по умолчанию использует Qt для функций OpenCV.

Когда даже запускается тестовый код (см. Ниже), который открывается и показывает поток с камеры. Здесь невозможно открыть камеру (я использую XIMEA xiQ). С нормальной вебкамерой все работает.

В Eclipse оба работают.

Краткое описание шагов, которые я сделал до сих пор:

  1. OpenCV скомпилирован с поддержкой камеры XIMEA
  2. Я перекомпилировал OpenCV с поддержкой Qt
  3. make uninstall для текущей установки OpenCV
  4. make 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();
}

1

Решение

Наконец-то я смог в этом разобраться.

Я не знаю почему (надеюсь, у кого-то будет объяснение этому поведению), но Qt Creator не всегда использует новейшую версию OpenCV.

Я обнаружил некоторые фрагменты предыдущей установки на моем компьютере, которые Qt Creator использовал вместо более новых версий библиотечных файлов.

После очистки каждого бита OpenCV и его перекомпиляции с поддержкой драйверов камер Qt и XIMEA (и других неважных вещей) все работало нормально.

Надеюсь, это поможет.

1

Другие решения


По вопросам рекламы [email protected]