OpenCV (CvHaarClassifierCascade *) cvLoad не загружается, невозможно загрузить XML-файл - PullRequest
0 голосов
/ 23 августа 2011

Я пытаюсь определить лицо, используя OpenCv 2.3. Моя попытка загрузить "haarcascade_frontalface_alt_tree.xml" в мой проект, я постоянно не могу загрузить 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, но это не помогло.

Я использую OpenCV 2.3, сделал мою конфигурацию так же, как в этом учебнике

Я использую эти библиотеки (я предполагаю, что мои конфигурации правильные, файл существует и может быть открыт с помощью Notepad ++)

    #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 ]

3 голосов
/ 25 августа 2011

Чтобы сузить проблему, перед вызовом 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.Попробуйте этот учебник OpenCV 2 .Этот код из этого урока работает для меня:

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

cout << "Loaded face_cascade" << endl;
0 голосов
/ 05 апреля 2013

Проверьте правильность строки с именем файла "haarcascade_frontalface_alt.xml".У меня была эта проблема, и разделитель каталогов не распознавался.Я изменил символ «\» на «/», и учебник сработал.Для вашей информации, я использовал MacOS 10.8.3 под управлением Parallels с Windows 7, Visual Studio 2012 и opencv 2.44 - я использовал версию 2 учебного пособия

0 голосов
/ 23 января 2013

Это происходит и со мной, но, наконец, я думаю, что нашел проблему.

OpenCV имеет две разные библиотеки * d.lib и * .lib, d означает отладку.

Проблема в том, что вам нужно настроить соответствующие библиотеки для вашей среды (против моего в моем случае) в правильном режиме.

d.lib, когда вы находитесь в отладке, и .lib, когда вы находитесь в релизе.

Также в моем проекте мне нужно запустить его в режиме Release, чтобы он заработал:)

Эту настройку в моем vs2009 можно найти в свойствах, компоновщик, ввод, дополнительные зависимости.

С наилучшими пожеланиями

...