opencv3.0 — каскадное распознавание лиц C ++ Opencv 3.0

Я пытаюсь реализовать функцию распознавания лиц, упомянутую в руководстве

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

Я использую OpenCV 3.0 на Ubuntu 14.04.

Я скачал здесь каскадные 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

Решение

Я нашел несколько исправлений в переполнении стека и на других сайтах. Они заключаются в следующем:

  1. Измените кодировку символов с UTF-8 на ANSI с помощью Notepad ++.

  2. Предыдущий ответ:

convert_cascade предназначен для каскадов, обучаемых приложением haartraining, и не поддерживает формат каскадов, обучаемых приложением traincascade.

Чтобы сделать это с traincascade, просто снова запустите opencv_traincascade с
те же «-data», но установите «-numStages» в точку, которую вы хотите
генерировать до. Приложение загрузит обученные этапы, реализует
что требуется необходимое количество этапов, напишите каскад результатов в
XML и закончить работу. Прерывание процесса на этапе может
приведет к повреждению данных, поэтому, если вам лучше удалить этап в
завершение.

refrence: https://stackoverflow.com/a/25831423/5671364.

  1. Стандарт XML гласит:

если в документе XML отсутствует объявление кодировки (и нет
внешний механизм объявления кодировки, такой как заголовок HTTP
) предполагаемая кодировка документа XML зависит от
наличие Байт-Порядка-Маркировки (BOM).

Есть 3 способа это исправить:

  • Пусть OpenCV просто поместит тег «encoding =« ASCII »» в верхний корневой XML
    тег.
  • Оставьте верхний корневой тег XML, но закодируйте все как UTF-8
    перед записью в файл.
  • Сделайте что-нибудь еще, с Byte-Order-Mark,
    но держите это к стандарту.

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]