對於opencv使用cvLoad載入分類器報錯的解決
本人接觸C++的時間不長,只會寫一些簡單的程式。最近由於畢業設計設計到人臉識別部分。使用VS2013去開發,用的是opencv2.4.11版本去完成功能。
老師給了個簡單的例子先學著,那段程式在網上有很多,只要一艘人臉 識別程式幾乎就是那段程式了。
我把opencv的分類器路徑弄上程式後,執行是出錯的。但是把路徑亂改(就是不給分類器的路徑),就會成功顯示出圖片,但是是沒有經過人臉識別的圖片,就單純的原圖。
除錯程式後,很明顯地得出是下面這小段程式的 cvLoad 問題。無法成功載入分類器haarcascade_frontalface_alt.xml。
const char *pstrCascadeFileName = "D:\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml";
CvHaarClassifierCascade *pHaarCascade = NULL;
pHaarCascade = (CvHaarClassifierCascade*)cvLoad(pstrCascadeFileName);
在網上有很多人也遇到這個問題,各種辦法也有。但是都是無法解決的。
弄了2天,後來得到了個解決的辦法。
下載了個opencv2.4.10版本,把配置全部換成2.4.10版本的。最後執行,完美成功~
記得程式的路徑也要相應改了。配置要徹底改成2.4.10
這個問題似乎因為2.4.11版本的haarcascade_frontalface_alt.xml不穩定或者別的問題才會報錯,我2.4.11執行其他的影象處理是不會有問題的。
若是單純把haarcascade_frontalface_alt.xml替換了,也是不能成功的。因為haarcascade_frontalface_alt.xml的版本不同是不行的。所以要整個opencv換了才行。
本人也算新手,或許還有別的辦法可以解決。我發表這個是為了遇到這個問題的人能試試,或許就能解決了呢。畢竟自己經歷過遇到問題找不到幫助的痛苦。希望別人能儘量減少這樣的過程。