繁体   English   中英

简单的OpenCV命令在调试模式下工作,但不在发布模式下工作

[英]Simple OpenCV command works in Debug mode but not Release mode

我正在尝试使用CascadeClassifier::load()训练xml文件,并且它在调试模式下工作正常,但在发布模式下,我收到运行时错误。

我得到的错误是:

Testing.exe中0x000007feefbf4938处的未处理异常:0xC0000005:访问冲突写入位置0x0000000000000027。

我的代码如下:

CascadeClassifier c;
if (!c.load("C:/data/haarcascade_frontalface_alt.xml"))
{
    exit(1);
}

代码在加载线上崩溃。 为什么会这样?

确保在发布模式下运行时链接到openCV的发行版dll。 当我尝试使用混合版本和调试dll加载文件时,我遇到了类似的问题。

这篇文章。

没有猜测为什么你的load线只会导致发布版本的访问冲突。 因此,下一步是使用日志记录或printfs或任何适合您的OpenCV发布二进制文件。 这种类型的调试在这种情况下有效,因为您拥有OpenCV的源代码以及使用VS2010重新编译的能力。

我相信您的错误在于XML文件的“加载”和项目设置中的“工作目录”设置。

如果转到项目的“属性”窗口,请确保“调试”选项中的“工作目录”正确无误。 更改“配置”(在调试和发布之间),您应该能够进行比较。

当您尝试读取不存在的文件时,有时会出现此错误。 使用位于“错误”工作目录中的本地路径通常是它在一个配置而不是另一个配置中工作的罪魁祸首。

编辑:

该文件是否存在且是否是正确的XML?

这很奇怪。 检查调试和发布版本的选项,确保使用正确版本的库。

我尝试在我的项目上运行代码,并且在调试和发布版本中使用opencv 2.3.1都可以正常工作

尝试将这些代码行添加到另一个项目中,发布版本正常,并且您已经在使用opencv。 如果可行,则问题出在配置设置中。

暂无
暂无

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

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