opencv_traincascade построить промежуточный результат

Я тренирую каскад Хаара, используя opencv_trainscascade. Он работает нормально, но я хотел бы объединить различные xml-файлы, сгенерированные на каждом этапе, в полезный вывод. Использование./convert_cascade --size="XxX" output.xml приводит к ошибке. Я знаю, что это работало с opencv_haartraining нормально, чтобы генерировать промежуточный результат, но есть ли способ сделать то же самое для более новой версии?

OpenCV Error: Parsing error (classifier(0): Valid XML should start with '<?xml ...?>') in icvXMLParse, file /tmp/opencv-qGZ4sE/opencv-2.4.9/modules/core/src/persistence.cpp, line 2252
libc++abi.dylib: terminating with uncaught exception of type cv::Exception: /tmp/opencv-qGZ4sE/opencv-2.4.9/modules/core/src/persistence.cpp:2252: error: (-212) classifier(0): Valid XML should start with '<?xml ...?>' in function icvXMLParse

Abort trap: 6

Все XML-файлы в каталоге кажутся в порядке.

2 ответа

Решение

Некоторые копания дали это:

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

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

Единственный способ исправить это - изменить кодировку символов с UTF-8 на ANSI с помощью Notepad++. После этого все работало нормально.

Другие вопросы по тегам