OpenCV facedetect示例不会加载级联分类器xml

Eya*_*rry 4 c c++ opencv image-processing face-detection

我正在开发一个需要使用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及其对象.

有谁知道我做错了什么?

tk1*_*404 6

提供xml文件的完整路径

String face = "c:/data/xml/haarcascade_frontalface_alt.xml";
Run Code Online (Sandbox Code Playgroud)

它应该工作!


小智 6

我有同样的情况.当我意识到我在Debug配置中链接发布库时,我解决了它.更改opencv_231*.libopencv_*231d.lib已经解决了这个问题.

CascadeClassifier::load不是唯一导致此类麻烦的函数,请参阅此主题以获取详细信息:使用版本库时,OpenCV imread(filename)在调试模式下失败.