码迷,mamicode.com
首页 > 其他好文 > 详细

OpenCV:利用级联的haar分类器寻找检测目标

时间:2015-02-11 16:40:13      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:opencv

<span style="font-size:14px;">#include <opencv\cv.h>
#include <opencv\highgui.h>

CvHaarClassifierCascade* load_object_detector( const char* cascade_path ){

    return (CvHaarClassifierCascade*)cvLoad( cascade_path );
}

void detect_and_draw_objects( IplImage* image,
                              CvHaarClassifierCascade* cascade,
                              int do_pyramids ){

    IplImage* small_image = image;
    CvMemStorage* storage = cvCreateMemStorage(0);
    CvSeq* faces;
    int i, scale = 1;

    // 如果操作方式flags被指定,向下测量输入图像以得到性能的提高
    if( do_pyramids ){

        small_image = cvCreateImage( cvSize(image->width/2,image->height/2),
                                     IPL_DEPTH_8U, 3 );
        cvPyrDown( image, small_image, CV_GAUSSIAN_5x5 );
        scale = 2;
    }

    // 使用最快的变量
    faces = cvHaarDetectObjects( small_image, cascade, storage, 1.2, 2,
                                 CV_HAAR_DO_CANNY_PRUNING );

    // 绘制所有矩形
    for( i = 0; i < faces->total; i++ ){

        CvRect face_rect = *(CvRect*)cvGetSeqElem( faces, i );
        cvRectangle( image, cvPoint(face_rect.x*scale,face_rect.y*scale),
                     cvPoint((face_rect.x+face_rect.width)*scale,
                             (face_rect.y+face_rect.height)*scale),
                     CV_RGB(255,0,0), 3 );
    }

    if( small_image != image )
        cvReleaseImage( &small_image );
    cvReleaseMemStorage( &storage );
}

int main( int argc, char** argv ){

    IplImage* image;
    if( argc==3 && (image = cvLoadImage( argv[1], 1 )) != 0 ){

        CvHaarClassifierCascade* cascade = load_object_detector(argv[2]);
        detect_and_draw_objects( image, cascade, 1 );
        cvNamedWindow( "test", 0 );
        cvShowImage( "test", image );
        cvWaitKey(0);
        cvReleaseHaarClassifierCascade( &cascade );
        cvReleaseImage( &image );
    }
    return 0;
}
</span>

运行结果截图:

技术分享



OpenCV:利用级联的haar分类器寻找检测目标

标签:opencv

原文地址:http://blog.csdn.net/u010002704/article/details/43734853

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!