[英]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.