OpenCV CascadeClassifier初始化

时间:2012-03-12 09:37:07

标签: c++ qt opencv

我已经安装了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;

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


最后我重新编译了整个库,现在一切都很好。 谢谢你的答案!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

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

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