我在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 Opencv和OpenCV imread(filename) fails in debug mode when using release libraries。
我检查了自己的项目,但我没有混合使用Debug和Release库。还存在内存损坏。
答案 0 :(得分:1)
原来我使用的是MSVC9(VS2008)编译器用于我的Qt Creator项目,但使用的是使用MSVC10(VS2010)编译的OpenCV。
由于C ++接口在编译器版本中不稳定,因此导致内存损坏。问题是,这完全无声地失败,没有任何警告,并且它会因内存损坏而爆炸。
下载使用VS2010构建的Qt版本后,它现在正在运行。