2015-06-26 4 views
1

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

Когда даже запускается тестовый код (см. Ниже), который открывается и показывает поток камеры. Здесь невозможно открыть камеру (я использую 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 (и других неважных материалов) все работает нормально.

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