OpenCV 级联性能:有效 XML 错误
OpenCV Cascade Performance: valid XML error
我 运行 opencv 2.4.8
在 conda
环境中。我可以使用
训练 car detector
opencv_traincascade -data data -vec cars.vec -bg bg.txt -numPos 500 -numNeg 500 -numStages 2 -w 48 -h 24
但是,我无法使用
检查性能
opencv_performance -data data -info cars.txt
我收到一个解析错误:
OpenCV Error: Parsing error (data(0):
Valid XML should start with '<?xml ...?>') in icvXMLParse,
file /Users/jhelmus/anaconda/conda-bld/work/opencv-2.4.8/modules/core/src/persistence.cpp, line 2252
libc++abi.dylib:terminating with uncaught exception of type cv::
Exception: /Users/jhelmus/anaconda/conda-bld/work/opencv-2.4.8/modules/core/src/persistence.cpp:2252:
error: (-212) data(0): Valid XML should start with '<?xml ...?>' in function icvXMLParse
我检查了 .xml 文件,它们的格式正确
<?xml version="1.0"?>
作为第一行。
导致此错误的原因是什么?
这是一条措辞不当的错误信息;问题在于保存的检测器的格式。 opencv_performance
使用由 opencv_haartraining
输出的旧格式,并且不适用于以 opencv_traincascade
(docs) 使用的格式保存的检测器。
有两种解决方案:
1) 您可以使用 opencv_haartraining
(man page) 训练您的检测器。不推荐这样做,因为 opencv_haartraining
仅限于单个线程。这也是一种已弃用的方法。
2) 您可以将 -baseFormatSave
标志添加到您的 opencv_traincascade
命令 (man page),强制它以旧格式保存检测器,即:
opencv_traincascade -data data -vec cars.vec -bg bg.txt -numPos 500 -numNeg 500 -numStages 2 -w 48 -h 24 -baseFormatSave
但是,此功能有一个错误,它遗漏了分类器类型声明。您可以通过 运行ning
修复它
sed -i 's/<cascade>/<cascade type_id="opencv-haar-classifier">/g' data/cascade.xml
在保存的检测器上添加缺失的分类器类型。
任何一种方法都可以让您 运行
opencv_performance -data data -info cars.txt
测试你的检测器。
我 运行 opencv 2.4.8
在 conda
环境中。我可以使用
opencv_traincascade -data data -vec cars.vec -bg bg.txt -numPos 500 -numNeg 500 -numStages 2 -w 48 -h 24
但是,我无法使用
检查性能opencv_performance -data data -info cars.txt
我收到一个解析错误:
OpenCV Error: Parsing error (data(0):
Valid XML should start with '<?xml ...?>') in icvXMLParse,
file /Users/jhelmus/anaconda/conda-bld/work/opencv-2.4.8/modules/core/src/persistence.cpp, line 2252
libc++abi.dylib:terminating with uncaught exception of type cv::
Exception: /Users/jhelmus/anaconda/conda-bld/work/opencv-2.4.8/modules/core/src/persistence.cpp:2252:
error: (-212) data(0): Valid XML should start with '<?xml ...?>' in function icvXMLParse
我检查了 .xml 文件,它们的格式正确
<?xml version="1.0"?>
作为第一行。
导致此错误的原因是什么?
这是一条措辞不当的错误信息;问题在于保存的检测器的格式。 opencv_performance
使用由 opencv_haartraining
输出的旧格式,并且不适用于以 opencv_traincascade
(docs) 使用的格式保存的检测器。
有两种解决方案:
1) 您可以使用 opencv_haartraining
(man page) 训练您的检测器。不推荐这样做,因为 opencv_haartraining
仅限于单个线程。这也是一种已弃用的方法。
2) 您可以将 -baseFormatSave
标志添加到您的 opencv_traincascade
命令 (man page),强制它以旧格式保存检测器,即:
opencv_traincascade -data data -vec cars.vec -bg bg.txt -numPos 500 -numNeg 500 -numStages 2 -w 48 -h 24 -baseFormatSave
但是,此功能有一个错误,它遗漏了分类器类型声明。您可以通过 运行ning
修复它sed -i 's/<cascade>/<cascade type_id="opencv-haar-classifier">/g' data/cascade.xml
在保存的检测器上添加缺失的分类器类型。
任何一种方法都可以让您 运行
opencv_performance -data data -info cars.txt
测试你的检测器。