2014-12-02 109 views
1

我在Qt Creator中創建了一個OpenCV項目。這個非常簡單的代碼是導致內存破壞:cv :: imread()導致內存損壞

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

執行代碼後,cv::Mat是空的,而且文件名的內容充滿了垃圾。我讀了imread not working in OpencvOpenCV imread(filename) fails in debug mode when using release libraries

我檢查了我自己的項目,但我沒有混合調試和發佈庫。還有內存損壞。

回答

1

事實證明,我使用MSVC9(VS2008)編譯器爲我的Qt Creator項目,但使用使用MSVC10(VS2010)編譯的OpenCV。

由於C++接口在編譯器版本中不穩定,因此導致內存損壞。問題是,這完全失敗,沒有任何警告,它通過內存損壞爆炸。

下載使用VS2010構建的Qt版本後,它現在可以工作。