0

该项目的结果将显示一个包含图片的窗口。但它只是显示一个带有消息的控制台窗口

“按下关闭此窗口 qt”

并且不再显示任何内容。我使用 MSCV2010 版本运行。

我现在能做什么?

这是我的.pro:

QT       += core

QT       -= gui

TARGET = OpenCV
CONFIG   += console
CONFIG   -= app_bundle
#CONFIG   -= qt

TEMPLATE = app


SOURCES += main.cpp

INCLUDEPATH += C:/opencv/build/include

CONFIG(debug,debug|release){
LIBS += C:/opencv/build/x86/vc10/lib/opencv_core231.lib
LIBS += C:/opencv/build/x86/vc10/lib/opencv_highgui231.lib
LIBS += C:/opencv/build/x86/vc10/lib/opencv_imgproc231.lib
LIBS += C:/opencv/build/x86/vc10/lib/opencv_features2d231.lib
LIBS += C:/opencv/build/x86/vc10/lib/opencv_calib3d231.lib
}

CONFIG(release,debug|release){
LIBS += C:/opencv/build/x86/vc10/lib/opencv_core231.lib
LIBS += C:/opencv/build/x86/vc10/lib/opencv_highgui231.lib
LIBS += C:/opencv/build/x86/vc10/lib/opencv_imgproc231.lib
LIBS += C:/opencv/build/x86/vc10/lib/opencv_features2d231.lib
LIBS += C:/opencv/build/x86/vc10/lib/opencv_calib3d231.lib
}

和我的主要():

    int main(int argc, char* argv[])
{
    QCoreApplication a(argc, argv);
    Mat image=imread("C:/Desert.jpg");
    imshow("image",image);

    return a.exec();
}

========================================

最后,我发现了我的问题。

首先,我在“OpenCV-build-desktop-Qt_4_8_1_for_Desktop_-MSVC2010 _Qt_SDK__Release\release”运行我的项目的可执行文件。我发现,一些 dll 文件丢失了。我将它们复制到 System32 文件夹并成功运行!是的!

实际上,我将这些dll的路径放入系统环境中。但它仍然显示它找不到dll文件。发生了什么?

4

1 回答 1

2

如果你使用 imshow(),你也需要 waitKey(),否则什么都不会显示。(它不仅等待键等,整个窗口消息泵都隐藏在那里,所以,没有那个就没有blitting)

int main(int argc, char* argv[])
{
    QCoreApplication a(argc, argv);
    Mat image=imread("C:/Desert.jpg");
    imshow("image",image);
    waitKey(0); // wait forever until a key was pressed

    return a.exec();
}
于 2013-09-27T09:17:14.147 回答