【问题标题】:OpenCV facedetect example won't load cascade classifier xmlOpenCV facedetect 示例不会加载级联分类器 xml
【发布时间】:2011-12-30 11:30:21
【问题描述】:

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

有人知道我做错了什么吗?

【问题讨论】:

    标签: c++ c image-processing opencv face-detection


    【解决方案1】:

    给出xml文件的完整路径

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

    应该可以了!

    【讨论】:

      【解决方案2】:

      我也有同样的情况。当我意识到我在调试配置中链接发布库时,我解决了这个问题。将opencv_231*.lib 更改为opencv_*231d.lib 已解决问题。

      CascadeClassifier::load 不是唯一导致此类问题的函数,详情请参阅此线程:OpenCV imread(filename) fails in debug mode when using release libraries

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          如果您使用的是 Windows,请检查路径。担心的是

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

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

          【讨论】:

            猜你喜欢
            • 2015-02-05
            • 1970-01-01
            • 2016-06-13
            • 2016-04-29
            • 2012-07-05
            • 2017-11-21
            • 2015-12-16
            • 2015-04-21
            • 1970-01-01
            相关资源
            最近更新 更多