级联人脸检测c++ Opencv 3.0

cascade face detection C++ Opencv 3.0

本文关键字:Opencv c++ 检测 级联      更新时间:2023-10-16

我正在尝试实现教程中提到的人脸检测

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

我在Ubuntu 14.04上使用OpenCV 3.0。

我从这里下载了cascade xml文件

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

当我编译代码时,它给了我这个错误信息:

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

任何建议吗?

我在堆栈溢出和其他网站中发现了一些修复。它们如下:

  1. 使用notepad++将字符编码从UTF-8更改为ANSI

  2. 之前答:

convert_cascade用于由haartraining应用程序训练的级联,它不支持由traincascade应用程序训练的级联格式。

要对traincascade执行此操作,只需再次运行openv_traincascade相同的"-data",但将"-numStages"设置为您想要的点生成到。应用程序将加载训练阶段,实现有必要的阶段数,写入结果级联XML和完成一个工作。在一个阶段中中断进程可能会导致损坏的数据,所以如果您最好删除阶段完成。

具有:https://stackoverflow.com/a/25831423/5671364。

  • XML标准状态:
  • 表示XML文档中没有编码声明外部编码声明机制,如HTTP头可用),XML文档的假定编码取决于字节顺序标记(BOM)的存在

    有三种方法可以解决这个问题:
    • 让OpenCV把' encoding="ASCII" '标签放到最上面的根XML中标签。
    • 保留顶部根XML标记,但将所有内容编码为UTF-8
    • 做点别的,用字节顺序标记,但要保持标准。

    具有:http://code.opencv.org/issues/976