[英]Simple OpenCV command works in Debug mode but not Release mode
我正在嘗試使用CascadeClassifier::load()
訓練xml文件,並且它在調試模式下工作正常,但在發布模式下,我收到運行時錯誤。
我得到的錯誤是:
Testing.exe中0x000007feefbf4938處的未處理異常:0xC0000005:訪問沖突寫入位置0x0000000000000027。
我的代碼如下:
CascadeClassifier c;
if (!c.load("C:/data/haarcascade_frontalface_alt.xml"))
{
exit(1);
}
代碼在加載線上崩潰。 為什么會這樣?
確保在發布模式下運行時鏈接到openCV的發行版dll。 當我嘗試使用混合版本和調試dll加載文件時,我遇到了類似的問題。
看這篇文章。
沒有猜測為什么你的load
線只會導致發布版本的訪問沖突。 因此,下一步是使用日志記錄或printfs或任何適合您的OpenCV發布二進制文件。 這種類型的調試在這種情況下有效,因為您擁有OpenCV的源代碼以及使用VS2010重新編譯的能力。
我相信您的錯誤在於XML文件的“加載”和項目設置中的“工作目錄”設置。
如果轉到項目的“屬性”窗口,請確保“調試”選項中的“工作目錄”正確無誤。 更改“配置”(在調試和發布之間),您應該能夠進行比較。
當您嘗試讀取不存在的文件時,有時會出現此錯誤。 使用位於“錯誤”工作目錄中的本地路徑通常是它在一個配置而不是另一個配置中工作的罪魁禍首。
編輯:
該文件是否存在且是否是正確的XML?
這很奇怪。 檢查調試和發布版本的選項,確保使用正確版本的庫。
我嘗試在我的項目上運行代碼,並且在調試和發布版本中使用opencv 2.3.1都可以正常工作
嘗試將這些代碼行添加到另一個項目中,發布版本正常,並且您已經在使用opencv。 如果可行,則問題出在配置設置中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.