2014-11-16 4 views
0

Windows 용 QT Creator 3.2.2가 있습니다. gcc/g ++ - 4.9.1과 mingw-x64를 컴파일러/디버거로 사용하고 있습니다. 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를 사용하여 디스플레이 창을 표시하는 것과 관련이 있다고 생각합니다.

편집 : 이미지가 비어 있지 않습니다. 내 코드에서 빈 이미지를 확인하고 있습니다.

답변

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

관련 문제