0

OpenCv2.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コマンドの前に画像を読み込もうとしましたが、役に立ちませんでした。

私はOpenCV2.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")
4

3 に答える 3

3

問題を絞り込むには、電話をかける前にcvLoad、ファイルが存在するかどうかを確認する必要があります。1 つの方法を次に示します。

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;
于 2011-08-25T01:57:53.317 に答える
0

ファイル名「haarcascade_frontalface_alt.xml」の文字列が正しいことを確認してください。この問題があり、ディレクトリセパレーターが認識されませんでした。「\」文字を「/」に変更すると、チュートリアルが機能しました。参考までに、Windows 7、Visual Studio 2012、およびopencv 2.44でParallelsを実行するMacOS 10.8.3を使用していました-チュートリアルのバージョン2を使用していました

于 2013-04-05T08:03:08.757 に答える
0

それは私にも起こりますが、最終的に問題を見つけたと思います。

OpenCV には 2 つの異なるライブラリ *d.lib と *.lib があり、d はデバッグを意味します。

問題は、適切なライブラリを適切なモードで環境 (私の場合は対) にセットアップする必要があることです。

デバッグ中は d.lib、リリース中は .lib です。

また、私のプロジェクトでは、リリースモードで実行して機能させる必要があります:)

私の vs2009 でのこのセットアップは、[プロパティ]、[リンカー]、[入力]、[追加の依存関係] の下にあります。

よろしくお願いします

于 2013-01-23T09:10:54.440 に答える