首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenCV (CvHaarClassifierCascade*) cvLoad未加载,无法加载xml文件

OpenCV (CvHaarClassifierCascade*) cvLoad未加载,无法加载xml文件
EN

Stack Overflow用户
提问于 2011-08-23 16:13:38
回答 3查看 22.6K关注 0票数 0

我正在尝试使用OpenCv 2.3进行人脸检测。我试图在我的项目中加载"haarcascade_frontalface_alt_tree.xml“,但我总是无法加载xml文件。

代码语言:javascript
运行
复制
    CvHaarClassifierCascade * pCascade = 0;  // the face detector   
const char* file ="C:\OpenCV2.3\opencv\data\haarcascades\haarcascade_frontalface_alt_tree.xml" ; 
pCascade = (CvHaarClassifierCascade*) cvLoad(file , NULL, NULL, NULL);
    if (!pCascade)   { 
        exit(-1);    // unable to load xml 
    }

我相信我正经历着和this problem一样的问题。

在使用cvLoad命令之前,我曾尝试加载图像,但无济于事。

我使用的是OpenCV 2.3,我的配置就像在这个tutorial中一样。

我正在使用这些库(我假设我的配置是正确的,文件存在并且可以使用Notepad++打开)。

代码语言:javascript
运行
复制
    #include <stdio.h>
#include "opencv2\opencv.hpp"
#include "cv.h"
#include "highgui.h"
//#include "cvaux.h"

using namespace cv;


#pragma comment(lib, "opencv_core230d.lib")
#pragma comment(lib, "opencv_highgui230d.lib")
//#pragma comment(lib, "opencv_contrib230d.lib")
//#pragma comment(lib, "opencv_calib3d230d.lib")
//#pragma comment(lib, "opencv_features2d230d.lib")
//#pragma comment(lib, "opencv_flann230d.lib")
//#pragma comment(lib, "opencv_gpu230d.lib")
#pragma comment(lib, "opencv_haartraining_engined.lib")
#pragma comment(lib, "opencv_imgproc230d.lib")
//#pragma comment(lib, "opencv_legacy230d.lib")
//#pragma comment(lib, "opencv_ml230d.lib")
//#pragma comment(lib, "opencv_objdetect230d.lib")
//#pragma comment(lib, "opencv_video230d.lib")
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-25 09:57:53

要缩小问题的范围,在调用cvLoad之前,您应该检查该文件是否存在。这里有一种方法:

代码语言:javascript
运行
复制
struct stat buf;
int statResult = stat(file,&buf);
if (statResult || buf.st_ino < 0) {
    cout << "File not found: " << file << endl;
    exit(-2);
}

您将需要#include <sys/stat.h>

在我的系统(OS X 10.6.8/OpenCV 2.3)上,当我试图加载haarcascade_frontalface_alt_tree.xmlhaarcascade_frontalface_alt.xml时,我得到一个异常:

代码语言:javascript
运行
复制
OpenCV Error: Unspecified error (The node does not represent a user object (unknown type?)) in cvRead, file /Users/steve/Development/opencv2/opencv/modules/core/src/persistence.cpp, line 4857

我认为您使用的是一个过时的OpenCV 1教程,该教程不适用于当前版本的haarcascade_frontalface_alt_tree.xml。请尝试使用this OpenCV 2 tutorial。该教程中的代码适用于我:

代码语言:javascript
运行
复制
CascadeClassifier face_cascade;
if (!face_cascade.load( file) ) { 
    cout << "Couldn't load face_cascade" << endl;
    exit(-1); 
}

cout << "Loaded face_cascade" << endl;
票数 3
EN

Stack Overflow用户

发布于 2013-01-23 17:10:54

这也发生在我身上,但最终我想我找到了问题所在。

OpenCV有两个不同的库*d.lib和*.lib,d表示调试。

问题是您需要在适当的模式下为您的环境(在我的情况下是vs)设置适当的库。

在调试时为d.lib,在发布时为.lib。

另外,在我的项目中,我需要在发布模式下运行它以使其工作:)

在我的vs2009中,这个设置可以在属性,链接器,输入,附加依赖项下找到。

诚挚的问候

票数 0
EN

Stack Overflow用户

发布于 2013-04-05 16:03:09

检查文件名为"haarcascade_frontalface_alt.xml“的字符串是否正确。我遇到了这个问题,目录分隔符无法识别。我将“\”字符更改为“/”,并且教程起作用了。供您参考,我使用的是在Windows7、Visual Studio 2012和opencv 2.44上运行Parallels的MacOS 10.8.3 -我使用的是本教程的版本2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7158039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档