0

私はここで新しいです。私は現在、opencvを使用していくつかの簡単なプロジェクトを行っています。opencvでの私の現在のプロジェクトは、顔検出です。私は以下のようなコードを持っています:

#include <stdio.h>
#include "cv.h"
#include "highgui.h"

CvHaarClassifierCascade *cascade;
CvMemStorage            *storage;

void detectFaces( IplImage *img );

int main( int argc, char** argv )
{  
        CvCapture *capture;
IplImage  *frame;
int       key;
char      *filename = "haarcascade_frontalface_alt.xml";

cascade = ( CvHaarClassifierCascade* )cvLoad( filename, 0, 0, 0 );
storage = cvCreateMemStorage( 0 );
capture = cvCaptureFromCAM( 0 );

assert( cascade && storage && capture );

cvNamedWindow( "video", 1 );

while( key != 'q' ) {
    frame = cvQueryFrame( capture );

    if( !frame ) {
        fprintf( stderr, "Cannot query frame!\n" );
        break;
    }

    cvFlip( frame, frame, -1 );
    frame->origin = 0;

    detectFaces( frame );

    key = cvWaitKey( 10 );
}

cvReleaseCapture( &capture );
cvDestroyWindow( "video" );
cvReleaseHaarClassifierCascade( &cascade );
cvReleaseMemStorage( &storage );

return 0;
}

void detectFaces( IplImage *img )
{
int i;

CvSeq *faces = cvHaarDetectObjects(
        img,
        cascade,
        storage,
        1.1,
        3,
        0 /*CV_HAAR_DO_CANNY_PRUNNING*/,
        cvSize( 40, 40 ) );

for( i = 0 ; i < ( faces ? faces->total : 0 ) ; i++ ) {
    CvRect *r = ( CvRect* )cvGetSeqElem( faces, i );
    cvRectangle( img,
                 cvPoint( r->x, r->y ),
                 cvPoint( r->x + r->width, r->y + r->height ),
                 CV_RGB( 255, 0, 0 ), 1, 8, 0 );
}

cvShowImage( "video", img );
}

私が今立ち往生しているのは、xmlファイルをどこに置くべきかということです。opencv2.1の現在のディレクトリは、C:/OpenCV2.1です。

誰かがこの問題で私を助けることができますか?ありがとう

4

4 に答える 4

0

Windowsエクスプローラーのアイコンを使用してアプリケーションを実行している場合は、そのすぐ横にXMLファイルを配置します。

コマンドラインターミナルから実行している場合は、XMLを現在の作業ディレクトリに配置します。

于 2012-05-05T04:00:58.827 に答える
0

このcharを使用してロードしているため、* filename = "haarcascade_frontalface_alt.xml"; 次に、xmlファイルを現在のディレクトリに配置する必要があります。他のディレクトリにある場合は、char * filename = "C://opencv//...haarcascade_frontalface_alt.xml";のように代わりにフォルダを検索します。

于 2012-05-05T19:58:15.787 に答える
0

haarカスケードファイルを次の下に配置することをお勧めします。

まず、Haar_cascade.xmlファイルをプロジェクトのソリューションフォルダー(VS環境プロジェクトフォルダー)の下に置きます。

手順: 1。ソリューションファイルを右クリックします。2.[構成のプロパティ]オプションをクリックします。3。[デバッグ]をクリックします。4.デバッグ中。右側の[コマンド引数]で、カスケードxmlの名前を指定します。たとえば、haar_cascade_frontalface.xml

于 2013-06-30T06:52:25.683 に答える
0

あなたが使用することができます-

face_cascade.load("d:\\haarcascade_frontalface_alt.xml")

コードが次のようになるように-

/** @function main */
 int main( int argc, const char** argv )
 {
   CvCapture* capture;
   Mat frame;
   face_cascade.load("F:\\haarcascade_frontalface_alt.xml");
   eyes_cascade.load("F:\\haarcascade_eye_tree_eyeglasses.xml");
于 2014-09-27T20:07:30.840 に答える