簡體   English   中英

在Windows中的Qt中配置OpenCv

[英]Configuration OpenCv in Qt in windows

我在一個人工視覺項目中工作,該項目需要用於用戶交互的GUI。

尋找一些可行的解決方案后,我決定使用Qt進行編程。

我遵循找到的一些教程,但是最后我總是遇到同樣的問題:如果鍵入一些opencv代碼,程序啟動后會崩潰。

我正在使用帶有Visual Studio編譯器(適用於32位的MSCV 2010)的opencv 2.4.10和Qt 5.3.2。

出於學習目的,我正在嘗試部署以下項目:

  • opencvButton.pro:

     QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = opencvButton TEMPLATE = app INCLUDEPATH += C:\\\\opencv\\\\build\\\\include LIBS += -LC:\\\\opencv\\\\build\\\\x86\\\\vc10\\\\lib \\ -lopencv_calib3d2410d \\ -lopencv_contrib2410d \\ -lopencv_core2410d \\ -lopencv_features2d2410d \\ -lopencv_flann2410d \\ -lopencv_gpu2410d \\ -lopencv_highgui2410d \\ -lopencv_imgproc2410d \\ -lopencv_legacy2410d \\ -lopencv_ml2410d \\ -lopencv_nonfree2410d \\ -lopencv_objdetect2410d \\ -lopencv_ocl2410d \\ -lopencv_photo2410d \\ -lopencv_stitching2410d \\ -lopencv_superres2410d \\ -lopencv_ts2410d \\ -lopencv_video2410d \\ -lopencv_videostab2410d SOURCES += main.cpp\\ mainwindow.cpp HEADERS += mainwindow.h FORMS += mainwindow.ui 
  • mainwindow.h:

     #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QPushButton> #include <QMessageBox> #include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); private slots: void handleButton(); private: QPushButton *m_button; }; #endif // MAINWINDOW_H 
  • main.cpp:

     #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication app(argc, argv); MainWindow mainWindow; mainWindow.showMaximized(); return app.exec(); } 
  • 最后,mainwindow.cpp:#include“ mainwindow.h”

      #include <QCoreApplication> using namespace cv; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // Create the button, make "this" the parent m_button = new QPushButton("Display image", this); // set size and location of the button m_button->setGeometry(QRect(QPoint(100, 100), QSize(200, 50))); // Connect button signal to appropriate slot connect(m_button, SIGNAL (released()), this, SLOT (handleButton())); } void MainWindow::handleButton() { // Define image path String imaloc = "C:\\\\Users\\\\Virtualmech\\\\Desktop\\\\ipRedCable.png"; // Mat instance declaration image. Mat image; // Load imaloc image in Mat instance. image = imread(imaloc); if(image.empty()){ QMessageBox::about(this, "Error", "Cannot load image"); }else{ // Declare name of window namedWindow("Display image"); // Show image imshow("Display image", image); // Wait for user interaction waitKey(0); // Close and destroy window destroyAllWindows(); } } 

該項目只有一個按鈕,單擊時,程序應在imaloc路徑中顯示圖像。

我得到的應用程序輸出是:

正在啟動C:\\ Users \\ Virtualmech \\ Documents \\ opencvButton \\ debug \\ opencvButton.exe ...

該程序意外完成。

C:\\ Users \\ Virtualmech \\ Documents \\ opencvButton \\ debug \\ opencvButton.exe崩潰

而這甚至沒有開始。

如果我在mainwindow.cpp中注釋與opencv相關的代碼,該程序將完美運行。

現在,如果我僅聲明(未定義) Mat實例,則該應用程序退出運行,並再次顯示相同的輸出。

我認為這一定是配置問題,但找不到。

有人可以提供任何線索嗎?

感謝您的幫助和時間。

我認為您忘記將必要的dll放在要嘗試運行的可執行文件旁邊,放在您的情況下的debug文件夾中。

要找出丟失的dll,請嘗試直接運行該程序,而不要通過Qt Creator的界面進行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM