带有 OpenCv 的 Qt 啥都不做

Posted

技术标签:

【中文标题】带有 OpenCv 的 Qt 啥都不做【英文标题】:Qt with OpenCv does nothing带有 OpenCv 的 Qt 什么都不做 【发布时间】:2013-06-20 16:17:12 【问题描述】:

我正在使用 Qt 5.0.2 并尝试开始使用 OpenCv。

如果我运行以下程序,它只显示一个控制台并说按任意键,但它不显示任何图像。我什至没有收到 qDebug() 消息。

但是,删除了 Opencv 的内容后,我收到了消息。

PS:是的,我确保 Desert.jpg 位于 exe 所在的同一文件夹中。 first-openCV-test.pro:

QT       += core
QT       -= gui
TARGET = first-openCV-test
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += F:\\QT\\libraries\\opencv\\opnecv_build_2.4.5\\install\\include
LIBS += -LF:\\QT\libraries\\opencv\\opnecv_build_2.4.5\\install\\lib \
    -lopencv_core245.dll \
    -lopencv_highgui245.dll \
    -lopencv_imgproc245.dll \
    -lopencv_features2d245.dll \
    -lopencv_calib3d245.dll

main.cpp:

#include <QDebug>
#include <QCoreApplication>

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


int main(int argc, char *argv[])

        // read an image
        qDebug()<< "start initialising";
        cv::Mat image= cv::imread("Desert.jpg");
        // create image window named "My Image"
        qDebug()<< "name Window";
        cv::namedWindow("My Image");
        // show the image on window
        qDebug()<< "show image: ";
        cv::imshow("My Image", image);
        // wait key for 5000 ms
        qDebug()<< "wait";
        cv::waitKey(5000);
        return 1;

/////////////////////////////////////// ///////////////////////////////////

感谢您的快速解答。

我尝试了一些东西,并重新构建并重新下载了它。我把它改成了这样: QT += 核心 QT -= gui 目标 = 第一次测试 配置 += 控制台 配置 -= app_bundle 模板 = 应用程序 来源 += main.cpp

INCLUDEPATH += "F:/QT/libraries/opencv/build/include" \
               "F:/QT/libraries/opencv/build/include/opencv" \
               "F:/QT/libraries/opencv/build/include/opencv2"

LIBS += -L"F:/QT/libraries/opencv/build/x86/mingw/lib"
    -libopencv_core245.dll
    -libopencv_highgui245.dll
    -libopencv_imgproc245.dll
    -libopencv_features2d245.dll
    -libopencv_calib3d245.dll                                               

但现在我收到以下错误:

F:\A_PROJECTS\OPEN-CV\first-test\first-test\main.cpp:-1: Fehler:undefined reference to `cv::fastFree(void*)'

F:\A_PROJECTS\OPEN-CV\first-test\first-test\main.cpp:-1: Fehler: undefined reference to `cv::Mat::deallocate()'

【问题讨论】:

感谢您的快速解答。 【参考方案1】:

我不确定,如果这对你有帮助,但让我们试一试......

首先,在我的程序中,我使用条形“/”而不是“\\”。 其次,我从不将 .dll 放在库中。我使用这样的东西:

LIBS += -LC:/OpenCV/lib/ -llibopencv_core245 -llibopencv_highgui245 -llibopencv_imgproc245

如果您使用的是 qtcreator,请尝试进行这些更改,然后“运行 qmake”和“全部重建”。

【讨论】:

【参考方案2】:

确保图片加载成功:

cv::Mat image= cv::imread("Desert.jpg");
if (image.empty())

    // print error message
    return -1;

我编写了一个名为 cvImage 的简单 OpenCV/Qt 示例项目,它演示了 how to configure a .pro 文件以使它们协同工作。

【讨论】:

【参考方案3】:

当依赖项(像 openCV 这样的外部库)没有正确链接到 Qt 项目时,会引发“未定义引用”错误。我已经回答了一个类似的问题,我知道可以解决您的问题。您无需手动更改 .pro 文件,而是使用 Qt Creator 中的“添加库...”向导。 https://***.com/a/51914801/10245006

【讨论】:

以上是关于带有 OpenCv 的 Qt 啥都不做的主要内容,如果未能解决你的问题,请参考以下文章

FreeRTOS 任务突然啥都不做

React 类:setState 啥都不做(并且没有报告错误)[重复]

OpenCV destroyWindow() 不做任何事情。

Qt opencv编译详细教程(windows版)

UIViewController presentModalViewController:动画:啥都不做?

拯救错误啥都不做?