2011-08-23 5 views
0

OpenCv 2.3을 사용하여 얼굴 인식을 시도하고 있습니다. 내 프로젝트에 "haarcascade_frontalface_alt_tree.xml"을로드하려고 시도하는 중 끊임없이 XML 파일을로드 할 수 없습니다.OpenCV (CvHaarClassifierCascade *) cvLoad가로드되지 않고 xml 파일을로드 할 수 없습니다.

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 
    } 

나는 내가이 cvLoad 명령하기 전에 이미지를로드하는 것을 시도했다 this problem

같은 문제를 expeiancing 해요 있다고 생각하지만, 도움이되지 않았다. 내가 OpenCV의 2.3을 사용하고

, 그냥이 tutorial

에서 나는 (내가 가정 내 구성 파일이 존재하고 메모장을 사용하여 열 수 있습니다, 올바른 ++)

그 라이브러리를 사용하는 것 같은 내 구성을 만든
#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") 

답변

3

cvLoad으로 전화하기 전에 문제의 범위를 좁히려면 파일이 존재하는지 확인해야합니다. 여기에 한 가지 방법이다 : 나는로드 할 때

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.xml 또는 haarcascade_frontalface_alt.xml 나는 예외가 :

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을 시도하십시오. 그 자습서의이 코드는 나를 위해 일한다 :

CascadeClassifier face_cascade; 
if (!face_cascade.load(file)) { 
    cout << "Couldn't load face_cascade" << endl; 
    exit(-1); 
} 

cout << "Loaded face_cascade" << endl; 
+2

OP 솔루션이 자신의 답변에 대해 문제. – Joshua

0

그것은 나에게도 일어난다. 그러나 마침내 나는 문제를 발견했다고 생각한다.

OpenCV에는 두 개의 다른 라이브러리 * d.lib 및 * .lib가 있으며 d는 디버그를 의미합니다.

문제는 적절한 모드에서 내 환경 대 적절한 환경에 적절한 라이브러리를 설정해야한다는 것입니다.

d.lib 디버그 중이며 릴리스 될 때 .lib.

또한 내 프로젝트에 나는 그것이 작동 :)

내 vs2009에서이 설정은 속성, 링커, 입력, 추가 종속성에서 볼 수 있도록 릴리스 모드에서 실행해야합니다.

안부은 "haarcascade_frontalface_alt.xml"파일 이름 문자열이 올바른지

+0

어떻게 도서관을 사용 했습니까?조금 더 설명해 주시겠습니까? –

0

확인합니다. 이 문제가있어서 디렉터리 분리자가 인식되지 않았습니다. '\'문자를 '/'로 변경하고 튜토리얼이 작동했습니다. 귀하의 정보를 위해 Windows 7, Visual Studio 2012 및 opencv 2.44에서 Parallels를 실행하는 MacOS 10.8.3을 사용하고있었습니다.이 튜토리얼의 버전 2를 사용하고 있었습니다.

관련 문제