将Harrcascade加载到CascadeClalsifier时,XML解析错误
XML Parsing Error while loading HarrCascade into CascadeClassifier
我是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 cascaden";
return -1;
};
当我运行它(在发行模式下(时,我会得到一个"未手持异常"并断开。在调试模式下,我还会在控制台上获得XML解析错误(请参见下文(。
调试时,我发现一切都按预期运行,只有当我使用" haarcascade_eye_tree_eyeglasses.xml"作为我的cascadeclallagier。
String face_cascade_name = "C:/Users/$Username$/Downloads/haarcascade_eye_tree_eyeglasses.xml"
我尝试从OpenCV的GitHub多次重新下载Haarcascades(我看不到有关XML文件不好的任何其他投诉(。我试图加载多个不同的XML文件,但是所有这些错误都会引发相同的错误,除了" Haarcascade_eye_tree_eyeglasses.xml"。我找不到我在网上查看的其他地方。我已经尝试重新构建OpenCV库,甚至尝试将其他分类器XML数据粘贴到" Haarcascade_eye_tree_tree_eyeglasses.xml"的标题中,并且不知道下一步尝试什么。
有什么想法为什么只有1个haarcascade xml文件正确加载?
Visual Studio窗口错误
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$sourcerepostestCVhaarcascade_frontalface_alt.xml(1): Valid XML should start with '<?xml ...?>', file C:Users$Username$Downloadsopencv-mastermodulescoresrcpersistence_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。
我遇到了这个问题,当复制/粘贴从github到本地文件的这些XML文件的内容。在本地克隆仓库并将XML文件定为所需的位置后,解析问题消失了。
clone; opencv;来自GitHub的存储库(https://github.com/opencv/opencv/tree/master(在您当地的机器上。"不quot"复制内容。复制粘贴文件直接从克隆的位置到您的Visual Studio。它将起作用。
在这里,我终于找到了真正的答案。
您需要将XML文件更改为UTF-8。通常,我们下载该文件是带有bom的UTF-8。
您可以使用VSCODE应用更改文件代码。(请Google IT(
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- 将Harrcascade加载到CascadeClalsifier时,XML解析错误
- 提升写入 XML 错误编码
- 提升输入流错误.如何将标准:矢量的动态矢量另存为 XML 文件
- Expat XML解析器(静态链接,DLL错误(缺少Define?)
- 我正在尝试使用C++开发XML解析器.但是在返回时声明的枚举值上遇到错误
- VTD-XML C++ 编译和安装错误
- 使用 Xerces-C++ 解析递归 XML 模式 (XSD) 时的 Seg 错误
- 当 XML 文件丢失时,tinyxml2 上的分段错误
- 使用CodeSynthesis XSD编译有效的XML架构失败,错误为MSB3721
- 需要帮助诊断C++程序中的错误,该程序旨在从XML文件中提取时间戳
- 如何防止eclipsec/c++单元测试遇到导致runner挂起的XML解析错误
- 读取xml时出现越界错误
- 试图读取快速XML中的节点导致错误
- 使用libxml和c++创建我的xml时,关于UTF_8格式的错误
- OpenCV写入XML错误——节点重复
- 尝试从xml文件训练CvANN_MLP ann时出现意外的内存错误
- 有没有一种方法可以让QXmlStreamReader处理格式错误的XML
- 64位libjingle无法解析登录XML,出现expat错误:error_INVALID_TOKEN
- C++Win32计划任务由于XML错误而失败