繁体   English   中英

调试断言失败-DirectShow过滤器调用OpenCV函数-仅发布模式

[英]Debug Assertion Failed - DirectShow Filter calling OpenCV Function - Release mode only

我正在编写一个DirectShow筛选器,以使用OpenCV HaarcascadeClassifier检测对象。 它在“调试”模式下可以正常工作,但在“发布”模式下却不能,并且我不确定OpenCV函数(opencv_249 libs的VC 2010二进制文件)中是否存在内存泄漏,或者我的项目(设置)是否有问题。

我正在GraphStudio中加载过滤器,该工具可轻松构建DirectShow FilterGraph。 我不确定是否有关于在调试模式下编译过滤器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 Buffer。

如果我使用的DLL在Release模式,我收到以下错误消息 ,整体功能终止(所以大概别的地方FilterGraph动态的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 [...]

跟一个

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调用,该循环随机地(以前用time(NULL)种子)将cv::Rect对象插入向量。 筛选器不会崩溃,并按照我假定的方式显示随机矩形。

我已经读到其他人已经观察到(valgrind) cv::CascadeClassifiert::detectMultiScale产生内存泄漏。 而且我发现了一个链接,其中有人对detectSingleScale遇到了问题,一些OpenCV提交者将其标记为已修复( http://code.opencv.org/issues/2628 )。

问题:

是否有这个确切的问题(请参阅上一链接)仍然在detectMultiScale内?

问题是否可能不在我的项目中,而是在OpenCV库中?

为什么仅在发布模式下会出现此问题?

为什么只在DirectShow筛选器中出现此问题? (如果在独立项目中以发布模式运行“相同”代码/功能,则不会出现“ Debug Assert Failed错误-尽管可能存在无法识别的内存损坏?!?)。

希望有人提前提出想法和建议!

编辑:

好的...我已经链接到msvcrtd.lib ...从我的项目中删除了整个lib(似乎我什至不需要它),现在它“可以工作了” ...剩下的问题是,是否存在某种内存泄漏。 还是与该lib链接是唯一的整体问题?

好的...我已经链接到msvcrtd.lib ...

从我的项目中删除了整个库(因此添加了默认库?!?),它现在“有效” ...

剩下的问题是,是否存在某种内存泄漏。 还是与该lib链接是唯一的整体问题?

愚蠢的我...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM