【问题标题】:How to link opencv in QtCreator and use Qt library如何在 QtCreator 中链接 opencv 并使用 Qt 库
【发布时间】:2013-03-30 16:49:24
【问题描述】:

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

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

为 QtCreator 安装 OpenCV

  1. 我已经安装了 MS Visual Studio 2010 Professional。 (我作为学生有免费许可证) - 我认为这没有必要,只是提一下
  2. 下载: Qt 5.0.1 for Windows 32 位(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:\Programs\opencv24\opencv*
    C:\Programs\opencv24\opencv_bin
  5. 设置PATH环境变量,这样就有了MinGW编译器的链接。例如C:\Programs\Qt\Qt5.0.1\Tools\MinGW\bin;
  6. 启动 cmake-gui.exe
    6.1 源码:设置OpenCV的默认目录; C:\Programs\opencv24\opencv
    6.2 binaries:设置opencv_bin目录; C:\Programs\copencv24\opencv_bin
    6.3 点击配置:
    • 选择MinGW MakefilesSpecify native compilers,点击下一步
    • 字段 C 用于 gcc.exe; C:/Programs/Qt/Qt5.0.1/Tools/MinGW/bin/gcc.exe
    • 字段 C++ 用于 g++.exe; C:/Programs/Qt/Qt5.0.1/Tools/MinGW/bin/g++.exe
    • 字段fortran可以为空,点击finish
    6.4 会出现多条红线 在搜索栏一一输入:WITH_QT、WITH_TBB、WITH_IPP、WITH_CUDA、CMAKE_BUILD_TYPE
    • WITH_QT - 必须选择。
    • WITH_TBB、WITH_IPP、WITH_CUDA - 必须取消选择
    • CMAKE_BUILD_TYPE - 单击并输入文本“调试”(不带引号)。
    • 清除搜索字段中的文本。
    6.5 点击configure并一直点击configure直到所有红线消失,然后点击generate关闭 cmake-gui.exe时间>
  7. 进入终端(~命令提示符),cd到构建目录(opencv_bin)并输入 mingw32-make
  8. 当进程在很长一段时间后结束时,键入 mingw32-make install
  9. 将 QtCreator/bin 的路径添加到 Path 变量中 C:\Programs\Qt\Qt5.0.1\Tools\QtCreator\bin

现在我在 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;
}

【问题讨论】:

  • 我这里定义LIBS是为了使用一个目录opencv_bin2,因为我多次重建opencv。
  • 我的项目cvImage 可在 GitHub 上找到,并演示如何使用 Qt/OpenCV 构建跨平台应用程序。检查 .pro 文件。
  • 我不得不使用“CMAKE_BUILD_TYPE = Release”而不是here 中给出的调试 - 你的第一个来源。
  • 无论如何...我无法让它工作!!不确定..仍在追求它
  • 在 CMake 中我不断收到此错误:“发现不合适的 Qt 版本”来自 NOTFOUND,此代码需要 Qt 4.x”

标签: c++ qt opencv qt-creator


【解决方案1】:

我终于开始快乐了。在调整这个问题时,我不得不尝试所有方法,如何定义 LIBS。手动列出它们有帮助,起初我写错了。

这就是它最终的工作方式:

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

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

【讨论】:

  • 我还是不知道原来的 LIBS += "C:/Programs/opencv24/opencv_bin2/bin/*.dll" 出了什么问题
  • 您需要添加.libs,因为它包含有关DLL内部函数的信息,并且在构建项目时需要此信息,因此您的exe将运行然后检查这些信息然后加载所需的DLL。跨度>
  • Wajdy:您的意思不是扩展名.lib 或.libs,而是目录lib 中的任何文件?可能是那些在 opencv_bin/lib 而不是 opencv_bin/install/lib 中的。但是当我简单地将 -LC:\\Programs\\opencv24\\opencv_bin2\\bin \ ... 更改为 -LC:\\Programs\\opencv24\\opencv_bin2\\lib \ ... 然后它就不起作用.你是说 \\bin \ ... 的解决方案是错误的?
  • Wajdy:即使我使用 install\lib 中的库,它也找不到 .dll.a 文件,尽管我设置了正确的路径。
  • 这对我有用,虽然我指定单独的 *.dll 文件不适用于 QT5.13,但在 QT5.12 中工作
【解决方案2】:

最初接受的答案对我不起作用,我正在运行 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 文件,您会注意到,通过仅指定一个或另一个,向导会自动包含另一个复选框)[例如. ...\opencv\build\x64\vc12\lib\opncv_world310.lib]
  3. 对于“包含文件夹”,导航到构建中的“包含”文件夹。 [例如。 ...\opencv\build\include]
  4. 选择您的操作系统、动态/静态库(无论哪个合适)
  5. 点击下一步,清理并运行!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    相关资源
    最近更新 更多