Qt Creator 在尝试运行 OpenCV 程序时崩溃。 [ntdll.dll 崩溃]

Posted

技术标签:

【中文标题】Qt Creator 在尝试运行 OpenCV 程序时崩溃。 [ntdll.dll 崩溃]【英文标题】:Qt Creator crashes when trying to run an OpenCV program. [ntdll.dll crash] 【发布时间】:2014-11-16 23:30:31 【问题描述】:

我有 Windows 版 QT Creator 3.2.2。我使用 mingw-x64 和 gcc/g++ - 4.9.1 作为我的编译器/调试器。 我使用 Cmake 来构建库。

目前,我正在尝试运行此代码:

#include <core/cvstd.hpp>
#include <core/mat.hpp>
#include <core/types.hpp>
#include <core.hpp>
#include <cstdlib>
#include <highgui.hpp>
#include <imgproc.hpp>
#include <iostream>
#include <sys/types.h>
#include <vector>
#include <video/background_segm.hpp>

using namespace cv;

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

  Mat image = imread("C:\\Users\\John\\Desktop\\Random\\QtTrySimple\\Try\\bgm.jpeg");
  namedWindow("LOL");
  imshow("LOL", image);    

但程序崩溃并显示“检测到严重错误 c0000374”。据我了解,此错误表明堆内存泄漏。

另外,这是崩溃时的堆栈:

0   ntdll!RtlUnhandledExceptionFilter   C:\Windows\SYSTEM32\ntdll.dll       0x775b40d0  
1   ntdll!EtwEnumerateProcessRegGuids   C:\Windows\SYSTEM32\ntdll.dll       0x775b4746  
2   ntdll!RtlQueryProcessLockInformation    C:\Windows\SYSTEM32\ntdll.dll       0x775b5952  
3   ntdll!RtlLogStackBackTrace  C:\Windows\SYSTEM32\ntdll.dll       0x775b7604  
4   ntdll!RtlIsDosDeviceName_U  C:\Windows\SYSTEM32\ntdll.dll       0x7755dc47  

我不知道为什么会发生内存泄漏。但我猜测这与 OpenCV 使用 windows API 来显示显示窗口有关。

编辑:图像不为空。我正在检查代码中的空图像。

【问题讨论】:

【参考方案1】:

由于缺乏信息,我只能猜测这是cv::imread()返回空cv::Mat的明显情况。当它无法找到/打开文件时会发生这种情况:

Mat image = imread("C:\\Users\\John\\Desktop\\Random\\QtTrySimple\\Try\\bgm.jpeg");
if (image.empty())

    std::cout << "!!! Failed to open image" << std::endl;
    return -1;      


imshow("LOL", image);    
waitKey(0);

在这种情况下,发生崩溃是因为调用 imshow() 以显示...什么都没有。

最后别忘了打waitKey(0),否则窗口会立即关闭,你就看不到了。

【讨论】:

图像不为空,这是我在程序崩溃时尝试的第一件事。另外,如果图像是空的并且您仍然尝试显示它,OpenCV 通常会抛出一个断言错误。 那么可能是与应用程序链接的库有问题。但这是我无法帮助你的事情(由于缺乏信息)。我很确定你可以通过在这个网站上搜索找到答案。这里有很多类似的问题。

以上是关于Qt Creator 在尝试运行 OpenCV 程序时崩溃。 [ntdll.dll 崩溃]的主要内容,如果未能解决你的问题,请参考以下文章

运行程序时 QT Creator 以代码 0 退出

Qt Creator LNK2019:使用 OpenCV 无法解析的外部符号

Qt Creator - 未获得某些 OpenCV 构造函数的函数参数提示

Opencv2.3 和 Qt Creator 2.4.1 链接器错误

QT+QT creator+OpenCV图像灰度化

Qt-Creator 中 OpenCV 程序中的链接器错误