OpenCV HaarcascadeClassifier
을 사용하여 개체를 검색하는 DirectShow 필터를 프로그래밍하고 있습니다. 디버그 모드에서는 잘 작동하지만 릴리즈 모드에서는 작동하지 않으며 OpenCV 함수 (opencv_249 라이브러리의 VC 2010 바이너리)에 메모리 누수가 있는지 또는 프로젝트 (설정)에 문제가 있는지 여부가 확실하지 않습니다.디버그 어설 션 실패 - OpenCV 함수를 호출하는 DirectShow 필터 - 릴리스 모드 만
DirectShow FilterGraph를 쉽게 구축 할 수있는 도구 인 GraphStudio에 필터를로드하고 있습니다. 디버그 모드에서 컴파일 될 필터 DLL에 대한 가정 여부가 확실하지 않습니다.
나는 기본적으로 몇 가지 전처리 한 후, 다음과 같은 일을 해요 :
std::vector<cv::Rect> objects;
mClassifier.detectMultiScale(inputGray,objects, 1.3);
for(unsigned int i=0; i<objects.size(); ++i)
{
cv::rectangle(outputImage, objects[i], cv::Scalar(255,255,255));
}
그래서 전처리하고있는 기능 블록, 코드의 표시 부분을 다음과 DirectShow의 버퍼에 데이터를 작성하여 다음 내.
Debug Assertion Failed!
Program: C:\Program Files (x86)\Graphstudio\graphstudio.exe
File: f:\dd\vctools\crt_bld\self_x86\crt\src\dbgdel.cpp
Line: 52
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
For information [...]
다음 : 내가 릴리스 모드에서 DLL을 사용하는 경우
, 나는 전체 기능 (그래서 아마 다른 곳 DirectShow를 Filtergraph 내부) 종료 후에 다음과 같은 오류 메시지가
Debug Assertion Failed!
Program: C:\Program Files (x86)\Graphstudio\graphstudio.exe
File: f:\dd\vctools\crt_bld\self_x86\crt\src\dbgdel.cpp
Line: 1322
Expression: _CrtlsValidHeapPointer(pUserData)
내가 mClassifier.detectMultiScale(inputGray,objects, 1.3);
이라고 말하면 필터가 작동하지 않습니다. 어떤 것들은 최적화되어 있지만, detectMultiScale
콜을 무작위로 (이전에 시간 (NULL)을 사용하여 시드 한) 루프로 대체하여 cv::Rect
오브젝트를 벡터에 삽입합니다. 필터는 충돌하지 않고 내가 추측 할 수있는 방식으로 임의의 직사각형을 표시합니다.
저는 다른 사람들이 (valgrind) cv::CascadeClassifiert::detectMultiScale
을 관찰하여 메모리 누수가 있음을 읽었습니다. 그리고 누군가가 detectSingleScale
에 문제가있는 링크를 발견했으며 일부 OpenCV 커미터가 그것을 고정으로 표시했습니다 (http://code.opencv.org/issues/2628).
질문 :
detectMultiScale
내에서이 정확한 문제는 (이전 링크를 참조)하는 기회가 (여전히)는이 있습니까?
문제가 내 프로젝트가 아니라 OpenCV 라이브러리에있을 가능성이 있습니까?
왜이 문제는 릴리스 모드에서만 발생합니까?
왜이 문제는 DirectShow 필터에서만 발생합니까? (독립 실행 형 프로젝트에서 "동일한"코드/기능을 릴리스 모드로 실행하는 경우 Debug Assert Failed
오류가 발생하지 않지만 인식 할 수없는 메모리 손상이있을 수 있습니다.?).
전 누군가가 아이디어를 가지고 있고 사전에 희망을 갖고 있기를 바랍니다.
편집 :
확인 ... 나는 내 프로젝트에서 전체 LIB를 제거 ... msvcrtd.lib
에 링크했다 (심지어 일부러 그것을 필요로 보인다)와 지금은 ...있다 "작동" 문제는 메모리 누출이 있는지 여부입니다. 아니면 그 lib에 유일한 전체 문제를 연결했다?