QT 输出“以代码 0 退出”并且没有显示图像
Posted
技术标签:
【中文标题】QT 输出“以代码 0 退出”并且没有显示图像【英文标题】:QT output is "exited with code 0" and no image is shown 【发布时间】:2013-05-07 06:48:16 【问题描述】:我正在编写以下代码:
main.cpp
#include <QCoreApplication>
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char *argv[])
Mat image = imread("C:/Users/Public/Pictures/Sample Pictures/Tulips.jpg");
namedWindow("Image");
imshow("Image",image);
waitKey(0);
Test.pro
#-------------------------------------------------
#
# Project created by QtCreator 2013-05-07T10:38:38
#
#-------------------------------------------------
QT += core
QT -= gui
TARGET = Test
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += E:/Jasmin/Yohan/opencv/build/include
INCLUDEPATH += E:/Jasmin/Yohan/opencv/include/opencv2
LIBS += E:/Jasmin/Yohan/opencv/build/x86/mingw/lib/libopencv_calib3d240.dll.a
LIBS += E:/Jasmin/Yohan/opencv/build/x86/mingw/lib/libopencv_contrib240.dll.a
LIBS += E:/Jasmin/Yohan/opencv/build/x86/mingw/lib/libopencv_core240.dll.a
LIBS += E:/Jasmin/Yohan/opencv/build/x86/mingw/lib/libopencv_highgui240.dll.a
LIBS += E:/Jasmin/Yohan/opencv/build/x86/mingw/lib/libopencv_imgproc240.dll.a
当我运行此代码时,没有显示图像,打印以下输出
Starting E:\Jasmin\Yohan\QTProjects\build-Test-Desktop_Qt_5_0_2_MinGW_32bit-Debug\debug\Test...
E:\Jasmin\Yohan\QTProjects\build-Test-Desktop_Qt_5_0_2_MinGW_32bit-Debug\debug\Test exited with code 0
下面将opencv相关的环境变量添加到“path”系统变量中
E:\Jasmin\Yohan\opencv\build\x86\mingw\bin;E:\Jasmin\Yohan\opencv\build\x86\vc10\bin
为什么我会遇到这个问题?我的 QT creator 版本是 2.7.0
更新
这是我的调试器要说的:
【问题讨论】:
我不知道,但我会在代码中的不同位置添加std::cout << "got here\n";
以查看它到达的位置。
你的调试器说什么?
@cmannett85:请看更新
@john:我在 main 的开头放了一个 print 语句。完全没有指纹\
如果它在 main 之前崩溃,通常是动态链接问题。使用与ldd
(Dependency Walker?)等效的 Windows 来查看您的应用正在请求哪些 dll,以及它实际找到了什么。
【参考方案1】:
您的代码似乎在做它应该做的事情:waitKey(0) 等待零秒或毫秒,然后程序退出。增加等待时间或将 waitKey 置于循环中..
【讨论】:
waitKey() 中的 0 表示永远 是的,这是标准的东西,就像"system("pause")【参考方案2】:使用“...\opencv\build\x86\mingw\bin”和“...\opencv\build\x86\mingw\lib”中的库
不能使用 OpenCV-2.4.x.exe 自带的库。
正如论坛中的一些开发人员和我发现的那样。在某些系统上,“opencv 2.4.x”的预编译库无法使用。 编译你自己的程序是可行的,但如果你尝试运行它们,它就会崩溃。在没有“opencv 2.4.x”的预编译库无法运行之前,您必须自己编译opencv。
完全忽略文件夹“...\opencv\build\x86\mingw\bin”和“...\opencv\build\x86\mingw\lib”。
Using the libs
How to build and use openCV
【讨论】:
以上是关于QT 输出“以代码 0 退出”并且没有显示图像的主要内容,如果未能解决你的问题,请参考以下文章
Qt可显示基本的图像类型,利用QImageQPxmap类可以实现图像的显示