将 QtCreator 2.7.0 与 OpenCV 2.4.5 一起使用

Posted

技术标签:

【中文标题】将 QtCreator 2.7.0 与 OpenCV 2.4.5 一起使用【英文标题】:Using QtCreator 2.7.0 with OpenCV 2.4.5 【发布时间】:2013-06-26 10:43:27 【问题描述】:

到目前为止,我一直在 VS 2012 中使用 OpenCV。一切正常。现在我正在尝试在 QtCreator 中工作,但我遇到了问题。当我在调试中运行项目时,出现错误:

"C:\Qt\Qt5.0.2\Tools\QtCreator\bin\DetectorPietoni\mainwindow.cpp:4: error: C1083: Cannot open include file: 'opencv2/core/core.hpp': No such file or directory"

在发布模式下出现错误:

"mainwindow.obj:-1: error: LNK2019: unresolved external symbol "class cv::Mat __cdecl cv::imread(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" (?imread@cv@@YA?AVMat@1@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) referenced in function "private: void __cdecl MainWindow::on_pushButton_clicked(void)" (?on_pushButton_clicked@MainWindow@@AEAAXXZ)".

我正在运行的代码是下一个:

#include "mainwindow.h"
#include "ui_mainwindow.h"

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

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)

    ui->setupUi(this);


MainWindow::~MainWindow()

    delete ui;


void MainWindow::on_pushButton_clicked()

    cv::Mat img = cv::imread("C:\\PedestrianDetectionDataset\\test\\pos\\1.png");

我的设置是:

TARGET = DetectorPietoni
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

INCLUDEPATH += C:\OpenCV-2.4.5\\opencv\build\include

CONFIG(release,debug|release)

    LIBS += C:\\OpenCV-2.4.5\\opencv\\build\\x64\\vc11\\lib\\opencv_core245.lib \
            C:\\OpenCV-2.4.5\\opencv\\build\\x64\\vc11\\lib\\opencv_features2d245.lib \
            C:\\OpenCV-2.4.5\\opencv\\build\\x64\\vc11\\lib\\opencv_highgui245.lib \
            C:\\OpenCV-2.4.5\\opencv\\build\\x64\\vc11\\lib\\opencv_imgproc245.lib \
            C:\\OpenCV-2.4.5\\opencv\\build\\x64\\vc11\\lib\\opencv_ml245.lib


CONFIG(debug,debug|release)

    LIBS += C:\\OpenCV-2.4.5\\opencv\\build\\x64\\vc11\\lib\\opencv_core245d.lib \
            C:\\OpenCV-2.4.5\\opencv\\build\\x64\\vc11\\lib\\opencv_features2d245d.lib \
            C:\\OpenCV-2.4.5\\opencv\\build\\x64\\vc11\\lib\\opencv_highgui245d.lib \
            C:\\OpenCV-2.4.5\\opencv\\build\\x64\\vc11\\lib\\opencv_imgproc245d.lib \
            C:\\OpenCV-2.4.5\\opencv\\build\\x64\\vc11\\lib\\opencv_ml245d.lib

有什么想法吗?

【问题讨论】:

您的包含路径有几个单反斜杠,请尝试将 \ 替换为 \\,或者改用斜杠。不过,不确定这是否能解决问题。 在RUN之前需要运行qmake吗? 是的,如果您仔细检查了路径,请执行清理、qmake、构建、运行 如果找不到包含,则包含路径错误。如果无法链接,则说明您没有添加正确的库(还要检查平台/配置的差异)。构建不会创建包含实际编译器/链接器输出的日志文件/输出,因此您至少可以根据您的设置验证 QtCreator 是否正确调用了它们? 【参考方案1】:

尝试将opencv.hppC:\OpenCV-2.4.5\opencv\build\include\opencv2 处理为C:\OpenCV-2.4.5\opencv\build\include

然后它可能能够找到包含。

【讨论】:

以上是关于将 QtCreator 2.7.0 与 OpenCV 2.4.5 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Qt Creator 2.7.0 编译器错误

Qt Creator 2.7.0 (Qt 5.0.2) 中的 C++11 线程支持

在 QtCreator 中从 Qt 调用 fortran 代码

QtCreator:将 QtCreatorCodeStyle 与 clang-format 统一起来

将 grpc 与 QtCreator 一起使用,未定义对 `grpc::...` 的引用

QtCreator影子构建与默认编译目录