C++ 在 Qt Creator Ubuntu 12.04 中设置 OpenCV

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17938360/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-27 21:35:55  来源:igfitidea点击:

Setting up OpenCV in Qt Creator Ubuntu 12.04

c++qtopencv

提问by vasan

I'm trying to set up OpenCV in Qt Creator and I have some problems. I added the OpenCV path in the Qt Creator .pro file

我正在尝试在 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

And I want to read and show image in this code

我想在这段代码中阅读和显示图像

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();
}

When I run my project it shows the following message:

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

Starting /home/vasan/Qt/build-OpenCVWithQt-Desktop-Debug/OpenCVWithQt...
The program has unexpectedly finished.
/home/vasan/Qt/build-OpenCVWithQt-Desktop-Debug/OpenCVWithQt exited with code 0

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

回答by Tormod Haugene

I have also been trying to set up OpenCV for Qt Creator for a few days now. I would recommend you trying the procedure found at

几天来,我也一直在尝试为 Qt Creator 设置 OpenCV。我建议您尝试在以下位置找到的程序

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

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

It is simple to follow, and it just WORKS. When you get to section 1.3, run any code sample you got at hand. I used:

遵循起来很简单,而且很有效。当你到达 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;
}

Hope that helps!

希望有帮助!

回答by Matheus Laranjeira

It worked for me:

它对我有用:

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

回答by giuseppe

Your code is correct. I think the problem arise because you are using shadow building. For this reason you should put the image in the shadow building folder (the folder that contains the executable) and not in the project folder (that contains only the code files).

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

Another tip is to insert a returnstatement in the ifcase, so program will not quit when it does not find the image.

另一个技巧是在ifcase 中插入return语句,因此程序在找不到图像时不会退出。

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

Also, be sure to include the following headers

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

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