2016-08-20 113 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