2015-11-23 85 views
2

我有一個問題,在opencv中使用filestorage將多個Mat變量寫入XML文件。我使用的是VC++ 2012,我可以在單獨的xml文件中編寫每個Mat,沒有任何問題。但是當我嘗試編寫第二個Mat對象時,它會拋出一個異常: test.exe中的0x000007FEFD06B3DD未處理的異常:Microsoft C++異常:內存位置0x00000000002ABE70處的cv :: Exception。使用opencv中的filestorage將多個Mat變量寫入XML文件

我在這裏發現了這個話題,但答案並沒有幫助我。該trows異常的代碼部分是:

fs<< "distCoeffs" << distCoeffs; 

請你幫我這個:

FileStorage fs("c:\\test.xml", FileStorage::WRITE); 
Mat cameraMatrix = (Mat_<double>(3,3) << 1000, 0, 320, 0, 1000, 240, 0, 0, 1); 
Mat distCoeffs = (Mat_<double>(5,1) << 0.1, 0.01, -0.001, 0, 0); 
fs<<"cameraMatrix" << cameraMatrix ; 
fs<< "distCoeffs" << distCoeffs; 
fs.release(); 

唯一的例外是在第二FS < <拋出。我從opencv文檔的示例中獲取這些代碼。

+0

運行調試並獲取錯誤消息。你確定你正在鏈接使用vc11編譯器構建的OpenCV嗎? – Miki

+0

我已經在調試模式下運行它,並且我使用了許多其他的opencv函數而沒有任何問題,所以我確信這個構建是正確的。另外我在主帖中提到了錯誤信息。 – MoMika

+0

代碼工作正常。雖然,您可能想要更改目標文件夾,因爲您可能沒有對「C:」的寫入權限。只需使用FileStorage fs(「test.xml」,FileStorage :: WRITE);',該文件將位於項目目錄中。某些功能已經運行的事實並不能保證您正確鏈接。可以肯定的是,你可以展示你的「圖書館目錄」嗎? – Miki

回答

0

問題最終得到解決,在項目配置屬性>鏈接器>輸入>附加依賴關係中,我設置了opencv_world300.lib,而它應該是opencv_world300d.lib。更改該問題現在已解決