2011-11-16 66 views
4

我正在研究需要使用Haar级联分类器进行OpenCV对象检测的应用程序。 我在64位Windows机器上使用OpenCV 2.3.1和VS2010。 我自己编译和构建OpenCV,并没有使用任何预编译的二进制文件。OpenCV facedetect示例不会加载级联分类器xml

首先,我想开始插手OpenCV中包含的示例facedetect.cpp。 我没有错误地构建它,但是当我尝试运行时它不会打开级联分类器xml文件(CascadeClassifier.load()函数返回false)。我没有从示例源代码中更改任何内容。

我正在使用与OpenCV一起发布的xml文件,所以问题不在xml文件中。 我也确保应用程序可以使用简单的fopen访问和读取文件。

我相信(但不确定)问题似乎是级联分类器是“旧”类型。 但是在OpenCV文档中,它特别暗示新的CascadeClassifier对象可以打开“旧”和“新”级联分类器。

这里有一个链接:http://opencv.itseez.com/modules/objdetect/doc/cascade_classification.html#cascadeclassifier-load

我即使使用预编译的二进制OpenCV2.2尝试,它做工精良与XML。然后我尝试编译2.2示例源代码,并再次无法加载xml。

我知道我可以尝试使用旧对象CvHaarClassifierCascade,但我更喜欢使用最新版本的OpenCV及其对象。

有没有人有线索我做错了什么?

回答

5

给出的xml文件

String face = "c:/data/xml/haarcascade_frontalface_alt.xml"; 

它应该工作的完整路径!

2

我通过使用记事本++得到了这个工作。我将所有相关的xml文件转换为ANSI,并删除了第一行<?xml version="1.0"?>,然后手动重写。

2

如果您使用的是Windows,请检查路径。关注点是

  1. 转义序列在路径中。
  2. 正向或反向斜杠取决于操作系统。

它应该像C:\\Ceemple\\data\\haarcascades\\haarcascade_frontalface_alt.xml。 (顺便说一下,我使用的是Ceemple IDE)