我正在开发一个需要使用 Haar 级联分类器进行 OpenCV 对象检测的应用程序。我在 64 位 Windows 机器上使用 OpenCV 2.3.1 和 VS2010。我自己编译和构建了 OpenCV,没有使用任何预编译的二进制文件。
首先,我想开始处理 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 及其对象。
有谁知道我做错了什么?