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

Dan*_*atz 45 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 - 为所有用户安装(可以在Program Files中)
  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 二进制文件:设置opencv_bin目录; C:\ Programs\copencv24\opencv_bin
    6.3 点击配置:
    • 选择MinGW Makefile指定本机编译器,单击"下一步"
    • 字段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 单击configure并继续单击configure直到所有红线都消失,然后单击generate关闭 cmake-gui.exe
  7. 转到终端(〜命令提示符),cd到构建目录(opencv_bin)并输入mingw32-make
  8. 当该过程在很长一段时间后结束时,键入mingw32-make install
  9. 添加到Path变量QtCreator/bin 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
Run Code Online (Sandbox Code Playgroud)

主文件:

//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;
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*atz 13

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

这是它最终的工作方式:

LIBS += -LC:\\Programs\\opencv24\\opencv_bin2\\bin \
    libopencv_core240d \
    libopencv_highgui240d \
    libopencv_imgproc240d \
    libopencv_features2d240d \
    libopencv_calib3d240d \
Run Code Online (Sandbox Code Playgroud)

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