Я новичок в 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.