2014-11-16 2 views
0

У меня есть QT Creator 3.2.2 для окон. Я использую mingw-x64 с gcc/g ++ - 4.9.1 как мой компилятор/отладчик. Я использовал Cmake для создания библиотек.При попытке запуска программы OpenCV Qt Creator падает. [ntdll.dll crash]

В настоящее время я пытаюсь запустить этот код:

#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 с помощью API окон, чтобы показать окно дисплея.

EDIT: изображение не пустое. Я проверяю пустое изображение в моем коде.

ответ

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) в конце, или окно будет немедленно закрыто, и вы не сможете его увидеть.

+0

Изображение не пустое, это было первое, что я пробовал, когда моя программа разбилась. Плюс, если изображение пуст, и вы все еще пытаетесь его отобразить, OpenCV обычно выдает ошибку утверждения. –

+0

Тогда это может быть проблемой с библиотеками, с которыми было связано приложение. Но я не могу вам помочь (из-за отсутствия информации). Я уверен, что вы можете найти ответ, выполнив поиск на этом сайте. Здесь было много подобных вопросов. – karlphillip

Смежные вопросы