cv :: imread()导致内存损坏

时间:2014-12-02 17:36:58

标签: c++ qt opencv

我在Qt Creator中创建了一个OpenCV项目。这个非常简单的代码导致内存损坏:

std::string fileName = "c:\\Workspace\\ImageProcessing\\Tutorials\\src\\images\\test.jpg";
cv::Mat mat = cv::imread(fileName.c_str());

执行代码后,cv::Mat为空,并且fileName的内容也被垃圾填满。我看了imread not working in OpencvOpenCV imread(filename) fails in debug mode when using release libraries

我检查了自己的项目,但我没有混合使用Debug和Release库。还存在内存损坏。

1 个答案:

答案 0 :(得分:1)

原来我使用的是MSVC9(VS2008)编译器用于我的Qt Creator项目,但使用的是使用MSVC10(VS2010)编译的OpenCV。

由于C ++接口在编译器版本中不稳定,因此导致内存损坏。问题是,这完全无声地失败,没有任何警告,并且它会因内存损坏而爆炸。

下载使用VS2010构建的Qt版本后,它现在正在运行。