【问题标题】:Setting up OpenCV in Qt Creator Ubuntu 12.04在 Qt Creator Ubuntu 12.04 中设置 OpenCV
【发布时间】:2013-07-30 02:07:24
【问题描述】:

我正在尝试在 Qt Creator 中设置 OpenCV,但遇到了一些问题。我在 Qt Creator .pro 文件中添加了 OpenCV 路径

INCLUDEPATH += /usr/local/include/opencv
LIBS += -L/usr/local/lib \
-lopencv_core \
-lopencv_imgproc \
-lopencv_highgui \
-lopencv_ml \
-lopencv_video \
-lopencv_features2d \
-lopencv_calib3d \
-lopencv_objdetect \
-lopencv_contrib \
-lopencv_legacy \
-lopencv_flann

我想在这段代码中读取并显示图像

void MainWindow::on_pushButton_clicked()
{
     cv::Mat matInput = cv::imread("LP.jpg");
     if( matInput.empty())
     {
          std::cout<<"Can't load image "<<std::endl;
     }
     cv::namedWindow("Show");
     cv::imshow("Show", matInput);
     cv::waitKey();
}

当我运行我的项目时,它会显示以下消息:

正在启动 /home/vasan/Qt/build-OpenCVWithQt-Desktop-Debug/OpenCVWithQt...
程序意外结束。
/home/vasan/Qt/build-OpenCVWithQt-Desktop-Debug/OpenCVWithQt 退出,代码为 0

【问题讨论】:

  • LP.jpg 在哪里?在资源中?
  • 所以如果你在调试模式下运行,它会在cv::Mat matInput = cv::imread("LP.jpg"); 行崩溃,对吧?
  • 是的,LP.jpg 在我的项目文件夹中。当我删除 opencv 代码时,即 Mat、imread、imshow 我可以构建并运行它可以显示 GUI 窗口。

标签: c++ qt opencv


【解决方案1】:

几天来,我也一直在尝试为 Qt Creator 设置 OpenCV。我建议您尝试在

找到的程序

https://code.google.com/p/qt-opencv-multithreaded/wiki/Documentation

这很容易理解,而且很有效。当您进入第 1.3 节时,运行您手头的任何代码示例。我用过:

int main( int argc, char** argv )
{
    if( argc != 2)
    {
     cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
     return -1;
    }

    Mat image;
    image = imread(argv[1], CV_LOAD_IMAGE_COLOR);   // Read the file
    image = imread("lena.png", CV_LOAD_IMAGE_COLOR);   // Read the file
    if(! image.data )                              // Check for invalid input
    {
        cout <<  "Could not open or find the image" << std::endl ;
        return -1;
    }

    namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
    imshow( "Display window", image );                   // Show our image inside it.

    waitKey(0);                                          // Wait for a keystroke in the window
    return 0;
}

希望有帮助!

【讨论】:

    【解决方案2】:

    它对我有用:

    INCLUDEPATH += /usr/local/include/opencv2
    LIBS += -L/usr/local/lib
    LIBS += -lopencv_core
    LIBS += -lopencv_imgproc
    LIBS += -lopencv_highgui
    LIBS += -lopencv_ml
    LIBS += -lopencv_video
    LIBS += -lopencv_features2d
    LIBS += -lopencv_calib3d
    LIBS += -lopencv_objdetect
    LIBS += -lopencv_contrib
    LIBS += -lopencv_legacy
    LIBS += -lopencv_flann
    LIBS += -lopencv_nonfree
    

    【讨论】:

      【解决方案3】:

      您的代码是正确的。我认为问题出现是因为您正在使用阴影构建。出于这个原因,您应该将图像放在影子构建文件夹(包含可执行文件的文件夹)中,而不是项目文件夹(仅包含代码文件)中。

      另一个技巧是在 if 的情况下插入一个 return 语句,这样程序在找不到图像时不会退出。

       if( matInput.empty())
       {
            qDebug() << "Can't load image";
            return;
       }
      

      另外,请务必包含以下标题

      #include <QDebug>
      #include <opencv2/core/core.hpp>
      #include <opencv2/highgui/highgui.hpp>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-20
        • 2011-01-14
        • 1970-01-01
        • 2014-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多