2012-08-10 45 views
2

我正在編寫一個使用OpenCV的程序,它涉及內部和失真參數。這些參數是從保存在光盤上的.xml文件中加載的。我用下面的命令在我開的聲明載入的文件:如何防範cvLoad失敗?

CvMat *intrinsic = (CvMat*)cvLoad("Intrinsics.xml"); 
CvMat *distortion = (CvMat*)cvLoad("Distortion.xml"); 

這隻要文件是在程序的工作目錄工作正常。當它們不是時,程序崩潰而沒有任何跡象表明錯誤的性質。我犯了多次之前沒有正確定位xml文件的錯誤,並且我希望將來能夠更輕鬆地進行故障排除。

我想創建一個防範未能加載文件的警惕。也許如果他們不存在我的程序可能會顯示錯誤信息並正常退出。我看到了方法建議here,它應該爲我工作,但我想知道是否有一個更乾淨的方式來做到這一點,而不包括另一個頭。

例如,OpenCV函數cvQueryFrame返回0,如果它不返回一個幀。我使用代碼

frame = cvQueryFrame(capture); 
if(!frame) 
{ 
    printf("ERROR: Could not get frame from webcam."); 
    exit(-1); 
} 

如果cvQueryFrame無法返回幀,則退出程序。我想用我的矩陣加載命令做類似的事情。這是可能的,如果是這樣,我該怎麼做?

我檢查了OpenCV文檔,找不到指定文件的cvLoad行爲描述,因此我不知道如何繼續。

我寫這個項目在C++和Windows 7

回答

0

It works運行它。繼續嘗試吧:

CvMat *distortion = (CvMat*)cvLoad("Distortion.xml"); 
if (!distortion) 
{ 
    printf("!!! cvLoad failed"); 
    exit(-1); 
} 
+0

是的,工作完美。謝謝! – user1505243 2012-08-10 22:04:50