Ошибка синтаксического анализа XML при загрузке HarrCascade в CascadeClassifier - PullRequest
0 голосов
/ 21 мая 2019

Я новичок в openCV и скопировал базовый код отслеживания глаз / лица из пример кода .Я получаю сообщение об ошибке в строке 20 - "face_cascade.load (...)".

String face_cascade_name = "C:/Users/$Username$/Downloads/haarcascade_frontalface_alt.xml";

if (!face_cascade.load( face_cascade_name ) )
    {
        cout << "--(!)Error loading eyes cascade\n";
        return -1;
    };

Когда я запускаю его (в режиме выпуска), я получаю «необработанное исключение» и ломаюсь.В режиме отладки я также получаю ошибку синтаксического анализа XML на консоль (см. Ниже).

При отладке я обнаружил, что все работает, как ожидалось, ТОЛЬКО ЕСЛИ я использую "haarcascade_eye_tree_eyeglasses.xml" какмой CascadeClassifier.

String face_cascade_name = "C:/Users/$Username$/Downloads/haarcascade_eye_tree_eyeglasses.xml"

Я пытался повторно загрузить HaarCascades несколько раз из github * 1014 openCV (других жалоб на плохие файлы XML я не вижу).Я пытался загрузить несколько разных файлов XML, но все выдают одну и ту же ошибку, кроме «haarcascade_eye_tree_eyeglasses.xml».Я не могу найти эту проблему где-либо еще, я смотрел онлайн.Я попытался пересобрать библиотеку openCV и даже попытался вставить данные XML другого классификатора в заголовок "haarcascade_eye_tree_eyeglasses.xml" и не знаю, что делать дальше.

Любые идеи, почему только 1XML-файл HaarCascade загружается корректно?

Ошибка Windows Visual Windowed

Unhandled exception at 0x00007FFC5E3F9129 in testCV.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000883396DF90.

Ошибка консоли отладки

OpenCV(4.1.0-dev) Error: Parsing error (cv::XMLParser::parse) in C:\Users\$Username$\source\repos\testCV\haarcascade_frontalface_alt.xml(1): Valid XML should start with '<?xml ...?>', file C:\Users\$Username$\Downloads\opencv-master\modules\core\src\persistence_xml.cpp, line 786

persistance_xml.cpp строка 774-786:

    bool parse(char* ptr)
    {
        CV_Assert( fs != 0 );

        std::string key, key2, type_name;
        int tag_type = 0;
        bool ok = false;

        // CV_XML_INSIDE_TAG is used to prohibit leading comments
        ptr = skipSpaces( ptr, CV_XML_INSIDE_TAG );

        if( memcmp( ptr, "<?xml", 5 ) != 0 )  // FIXIT ptr[1..] - out of bounds read without check
            CV_PARSE_ERROR_CPP( "Valid XML should start with \'<?xml ...?>\'" );

Я использую Visual Studio 2017, OpenCV 4.1.0, Win10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...