2016-08-20 112 views
1

我想實現在本教程級聯人臉檢測C++ 3.0 opencv的

http://docs.opencv.org/3.0-beta/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html#cascade-classifier

我使用的OpenCV 3.0在Ubuntu 14.04中提到的人臉檢測。

我從這裏

https://github.com/opencv/opencv/tree/master/data/haarcascades

downloaed級聯的xml文件當我編譯它給了我這個錯誤消息的代碼:

OpenCV Error: Parsing error (/...../haarcascade_frontalcatface.xml(5): Valid XML should start with '<?xml ...?>') in icvXMLParse, file /home/taleb/opencv3/opencv/modules/core/src/persistence.cpp, line 2220 
terminate called after throwing an instance of 'cv::Exception' 
    what(): /home/taleb/opencv3/opencv/modules/core/src/persistence.cpp:2220: error: (-212) /home/taleb/pythonproject/test1/haarcascade_frontalcatface.xml(5): Valid XML should start with '<?xml ...?>' in function icvXMLParse 

什麼建議嗎?

+0

了哪些文件haarcascade_frontalcatface.xml?它有效的XML? –

回答

2

我發現堆棧溢出和其他網站的一些修復。它們如下:

  1. 用記事本++將字符編碼從UTF-8更改爲ANSI。

  2. 以前的答案:

convert_cascade是由haartraining應用的培訓瀑布和它不支持traincascade應用的培訓級聯的格式。

要做到這一點traincascade,只需再次運行opencv_traincascade與 相同的「-data」,但將「-numStages」設置爲您想要生成 的點。應用程序將加載訓練階段,實現 需要的階段數,將結果寫入 xml並完成一個工作。在階段中斷進程可能導致數據損壞 ,所以如果您最好刪除 階段的完成。

參考文獻:https://stackoverflow.com/a/25831423/5671364

  1. XML標準規定:

如果沒有編碼聲明存在XML文檔(沒有 外部編碼聲明機制在諸如HTTP報頭是 可用),假定的XML文檔編碼取決於字節順序標記(BOM)的存在。

有3種方法來解決這個問題:

  • 讓OpenCV的只是把'encoding = 「ASCII」「標籤進入前根XML標籤 。
  • 保留最上面的根XML標記,但在將其寫入文件之前,將所有內容都編碼爲UTF-8 。
  • 做別的事,用字節順序標記, 但保持它的標準。

refrence:http://code.opencv.org/issues/976

+0

在Notepad ++中從UTF更改爲ANSI爲我工作。謝謝 – RyeGuy