【问题标题】:OpenCV CascadeClassifier initialization [closed]OpenCV CascadeClassifier初始化[关闭]
【发布时间】:2012-03-12 09:37:07
【问题描述】:

我已经安装了 opencv (2.3.1),现在我将它与 Qt 一起使用(SDK 1.1.3,Creator 2.3.0)。 (我用过这个教程:http://www.barbato.us/2011/12/20/opencv-2-3-qtcreator-windows/

我尝试的第一件事是 HelloWorld 示例(就像官方网站上的入门中的示例),它没有任何问题。我还尝试了其他一些示例。

现在我遇到了人脸识别示例的问题。代码本身可以在这里找到:http://www.opencv.org.cn/opencvdoc/2.3.1/html/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html,但是当我尝试运行它时,程序以代码 0 退出,好像一切都很好,但实际上什么也没发生。经过几个小时的尝试解决它,我发现问题本身出在 CascadeClassifier 变量中。因此,如果我有任何工作示例,然后我尝试初始化 CascadeClassifier 类的对象,程序将在此行以代码 0 退出。

CascadeClassifier face_cascade;

它也不依赖于这个变量是否是全局的。我也尝试过初始化指针,但在创建对象时也会发生同样的事情。


最后我重新编译了整个库,现在一切正常。 感谢您的回答!

【问题讨论】:

  • 你的代码加载haarcascade_frontalface_alt.xml成功了吗?
  • 如何查看?我的程序在加载前失败,在我在原始消息中写的那一行
  • 尝试调试!或者,如果您没有使用调试器的经验,请在感兴趣的行之前和之后放置一些打印语句。
  • 这就是我理解的问题在于调用 CascadeClassifier 的构造函数的方式:)

标签: c++ qt opencv


【解决方案1】:

我会将数据从 OCV 复制到包含可执行文件的目录。样本人脸检测数据位于 OpenCV OpenCV-2.3.1/data/haarcascades/ 的源代码树中。将haarcascade_frontalface_alt.xmlhaarcascade_eye_tree_eyeglasses.xml 从那里复制到程序的目标目录。

【讨论】:

  • 我已经做了,但是程序在CascadeClassifier的构造函数调用时关闭(不管它是否用文件名调用;文件名本身是正确的,我已经检查过)
【解决方案2】:

您可以使用以下代码检查您的分类器是否已成功加载:

    if (!cascade.load(classifierdir)) {
    printf("Unable to load classifier from %s\n", classifierdir);
    return 1;
}

【讨论】:

  • 我不能尝试,因为如果我这样做,程序将在初始化“级联”变量的行关闭,例如:codeCascadeClassifier cascade; code
猜你喜欢
  • 1970-01-01
  • 2016-11-28
  • 2012-01-09
  • 1970-01-01
  • 2019-08-28
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
  • 2013-05-03
相关资源
最近更新 更多