如何在QtCreator中链接opencv并使用Qt库

时间:2013-04-08 14:34:54

标签: c++ qt opencv qt-creator

这个问题必须重复多次,但它不起作用,有时它仍然没有答案。信息来源主要是这些 http://www.laganiere.name/opencvCookbook/chap1s1_2.shtml
http://www.youtube.com/watch?v=dgcXYQijV6c

这是我认为应该/可以做的事情的总和。 (现在它对我有用。)希望我从一开始就提到一切,目的是写一个非常清晰的教程。

为QtCreator安装OpenCV

  1. 我已经安装了MS Visual Studio 2010 Professional。 (作为学生,我有免费执照) - 我认为这不是必要的,只是提一下
  2. 下载:适用于Windows 32位的Qt 5.0.1(MinGW 4.7,823 MB)
    2.1 安装:警告,Qt使用的所有内容(例如OpenCV)必须位于名称中不包含空格的目录中。 - 即“程序文件”错误。 (但我不希望不同的程序文件直接在C上累积,所以我只创建了一个文件夹“Programs”,其中安装了所有重要的文件)
  3. 下载: cmake-2.8.10.2-win32-x86.exe - 为所有用户安装(可以在程序文件中)
  4. 下载: OpenCV-2.4.0.exe,解压缩到: C:\ Programs \ opencv24 - 它会创建一个“opencv”目录;添加另一个文件夹“opencv_bin”。现在它看起来像这样:
    C:\程序\ opencv24 \ * OpenCV的
    C:\程序\ opencv24 \ opencv_bin
  5. 设置PATH环境变量,以便有一个指向MinGW编译器的链接。例如 C:\程序\ Qt的\ Qt5.0.1 \工具\ MinGW的\ BIN;
  6. 启动cmake-gui.exe
    6.1 源代码:设置OpenCV的默认目录; C:\程序\ opencv24 \ OpenCV的
    6.2 二进制文件:设置opencv_bin目录; C:\程序\ copencv24 \ opencv_bin
    6.3 单击配置:
    • 选择 MinGW Makefiles 指定原生编译器,然后点击下一步
    • 字段C代表gcc.exe; C:/Programs/Qt/Qt5.0.1/Tools/MinGW/bin/gcc.exe
    • Field C ++适用于g ++。exe; C:/Programs/Qt/Qt5.0.1/Tools/MinGW/bin/g ++ EXE
    • 。 Field fortran可以为空,点击完成
    6.4 会出现许多红线在搜索字段中逐个输入:WITH_QT,WITH_TBB,WITH_IPP,WITH_CUDA,CMAKE_BUILD_TYPE
    • WITH_QT - 必须选中。
    • WITH_TBB,WITH_IPP,WITH_CUDA - 必须取消选中
    • CMAKE_BUILD_TYPE - 点击并输入文字“Debug”(不带引号)。
    • 清除“搜索”字段中的文本。
    6.5 点击配置并继续点击配置,直到所有红线消失,然后点击生成关闭 cmake-gui.exe
  7. 转到 终端(〜命令提示符) ,cd到build (opencv_bin)所在的目录并输入 的mingw32-MAK​​E
  8. 如果流程在很长一段时间后结束,请输入 mingw32-make install
  9. 向路径变量添加QtCreator / bin的路径 C:\ Programs \ Qt \ Qt5.0.1 \ Tools \ QtCreator \ bin
  10. 现在我在QtCreator中创建了一个新的控制台应用程序。

    //cvHello.pro
    QT       += core
    QT       -= gui
    
    TARGET = cvHello
    CONFIG   += console
    CONFIG   -= app_bundle
    
    TEMPLATE = app
    INCLUDEPATH += C:/Programs/opencv24/opencv_bin2/install/include
    LIBS += "C:/Programs/opencv24/opencv_bin2/bin/*.dll"
    
    SOURCES += main.cpp
    OTHER_FILES += \
        img.JPG
    

    主文件:

    //main.cpp
    #include <iostream>
    #include "opencv2/core/core.hpp"
    #include "opencv2/highgui/highgui.hpp"
    #include "opencv/cv.h"
    
    using namespace std;
    
    int main()
    {
        cout << "Hello World!" << endl;
    
        cv::Mat mat;
        mat = cv::imread("img.JPG");
        cvNamedWindow("hello");
        cv::imshow("hello",mat);
    
        cvWaitKey(0);
    
        return 0;
    }
    

2 个答案:

答案 0 :(得分:12)

最后,我开始感到高兴。在调整这个问题时,我必须尝试各种方法,如何定义LIBS。手动列出它们有帮助,起初我错误地写了它们。

这是最终的工作方式:

LIBS += -LC:\\Programs\\opencv24\\opencv_bin2\\bin \
    libopencv_core240d \
    libopencv_highgui240d \
    libopencv_imgproc240d \
    libopencv_features2d240d \
    libopencv_calib3d240d \

顺便说一句,如果我犯了任何语法错误,我很抱歉我的英语。 :)

答案 1 :(得分:1)

最初接受的答案对我不起作用,我正在运行MSVC2013 Professional和QT5.9。我找到了SIMPLE和SUREFIRE CROSS-PLATFORM解决方案,该解决方案应该可以帮助尝试将外部库(如openCV)与QT链接的任何人。

以下列出的步骤在Qt5文档中找到:http://doc.qt.io/qtcreator/creator-project-qmake-libraries.html在“添加库”部分下。

  1. 右键单击创建者左侧“项目窗格”中的项目文件...,然后选择“添加库...”
  2. 按照向导的说明

让我从这里添加一些特异性:

  1. 选择“外部库”
  2. 对于“库文件”,浏览至opencv_worldXXX.lib文件(或opencv_worldXXXd.lib文件,您会注意到,仅指定一个或另一个向导会具有一个自动包含另一个复选框的复选框) [ex 。 ... \ opencv \ build \ x64 \ vc12 \ lib \ opncv_world310.lib]
  3. 对于“包含文件夹”,导航到构建中的“包含”文件夹。 [例如... \ opencv \ build \ include]
  4. 选择您的操作系统,动态/静态库(以适当的为准)
  5. 点击下一步,清理并运行!