级联人脸检测C++ 3.0 opencv的
我想实现在本教程级联人脸检测C++ 3.0 opencv的
我使用的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
什么建议吗?
我发现堆栈溢出和其他网站的一些修复。它们如下:
用记事本++将字符编码从UTF-8更改为ANSI。
以前的答案:
convert_cascade是由haartraining应用的培训瀑布和它不支持traincascade应用的培训级联的格式。
要做到这一点traincascade,只需再次运行opencv_traincascade与 相同的“-data”,但将“-numStages”设置为您想要生成 的点。应用程序将加载训练阶段,实现 需要的阶段数,将结果写入 xml并完成一个工作。在阶段中断进程可能导致数据损坏 ,所以如果您最好删除 阶段的完成。
参考文献:https://*.com/a/25831423/5671364。
- XML标准规定:
如果没有编码声明存在XML文档(没有 外部编码声明机制在诸如HTTP报头是 可用),假定的XML文档编码取决于字节顺序标记(BOM)的存在。
有3种方法来解决这个问题:
- 让OpenCV的只是把'encoding = “ASCII”“标签进入前根XML标签 。
- 保留最上面的根XML标记,但在将其写入文件之前,将所有内容都编码为UTF-8 。
- 做别的事,用字节顺序标记, 但保持它的标准。
refrence:http://code.opencv.org/issues/976
在Notepad ++中从UTF更改为ANSI为我工作。谢谢 – RyeGuy
了哪些文件haarcascade_frontalcatface.xml?它有效的XML? –