单高斯背景建模opencv


基于opencv的单高斯背景建模demo,直接运行即可,使用摄像头获取视频,VS2010直接使用
资源截图
代码片段和文件信息
/*******************单高斯背景建模v1.0*************************
************************2010.01.22****************************/

#include 
#include 
#include 
#include 
#include 

int main(int argc char **argv)
{
    //新建窗口
    cvNamedWindow(“origin“ CV_WINDOW_AUTOSIZE);
    cvNamedWindow(“processing“ CV_WINDOW_AUTOSIZE);

    double alpha = 0.05;    //背景建模alpha值
    double std_init = 20;    //初始标准差
    double var_init = std_init * std_init;    //初始方差    
    double lamda = 2.5 * 1.2;    //背景更新参数


    //视频文件
    CvCapture *capture = NULL;

    //读取视频文件
    if (argc == 1)
    {
        //从摄像头读入
        capture = cvCreateCameraCapture(0);
    }
    else if (argc == 2)
    {
        //从文件读入
        capture = cvCreateFileCapture(argv[1]);
    }
    else
    {
        //读入错误
        printf(“input error
“);
        return -1;
    }

    IplImage *frame = NULL;        //原始图像
    IplImage *frame_u = NULL;    //期望图像
    IplImage *frame_var = NULL;    //方差图像
    IplImage *frame_std = NULL;    //标准差

    CvScalar pixel = {0};        //像素原始值
    CvScalar pixel_u = {0};        //像素期望
    CvScalar pixel_var = {0};    //像素方差
    CvScalar pixel_std = {0};    //像素标准差

    //初始化frame_u frame_var frame_std
    frame = cvQueryframe(capture);
    frame_u = cvCreateImage(cvSize(frame->width frame->height) IPL_DEPTH_8U 3);
    frame_var = cvCreateImage(cvSize(frame->width frame->height) IPL_DEPTH_8U 3);
    frame_std = cvCreateImage(cvSize(frame->width frame->height) IPL_DEPTH_8U 3);

    for (int y = 0; y < frame->height; ++y)
    {
        for (int x = 0; x < frame->width; ++x)
        {
            pixel = cvGet2D(frame y x);

            pixel_u.val[0] = pixel.val[0];
            pixel_u.val[1] = pixel.val[1];
            pixel_u.val[2] = pixel.val[2];

            pixel_std.val[0] = std_init;
            pixel_std.val[1] = std_init;
            pixel_std.val[2] = std_init;

            pixel_var.val[0] = var_init;
            pixel_var.val[1] = var_init;
            pixel_var.val[2] = var_init;

            cvSet2D(frame_u y x pixel_u);
            cvSet2D(frame_var y x pixel_var);
            cvSet2D(frame_std y x pixel_std);
        }
    }

    while (cvWaitKey(33) != 27)        //按ESC键退出 帧率33ms
    {
        frame = cvQueryframe(capture);

        //视频结束退出
        if (!frame)
        {
            break;
        }
double t = (double)cvGetTickCount();
        //单高斯背景更新
        for (int y = 0; y < frame->height; ++y)
        {
            for (int x = 0; x < frame->width; ++x)
            {
                pixel = cvGet2D(frame y x);
                pixel_u = cvGet2D(frame_u y x);
                pixel_std = cvGet2D(frame_std y x);
                pixel_var = cvGet2D(frame_var y x);

                //|I-u| < lamda*std 时认为是背景 进行更新
                if (fabs(pixel.val[0] - pixel_u.val[0]) 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5339  2012-08-05 15:59  dangaosidangaosidangaosi.cpp

     文件       4234  2012-08-05 15:48  dangaosidangaosidangaosi.vcproj

     文件       1407  2013-03-03 20:25  dangaosidangaosidangaosi.vcproj.PC-SU.Administrator.user

     文件      12256  2012-08-10 08:42  dangaosidangaosiDebugBuildLog.htm

     文件        663  2012-08-10 08:42  dangaosidangaosiDebugdangaosi.exe.embed.manifest

     文件        728  2012-08-10 08:42  dangaosidangaosiDebugdangaosi.exe.embed.manifest.res

     文件        621  2012-08-10 08:42  dangaosidangaosiDebugdangaosi.exe.intermediate.manifest

     文件      65259  2012-08-10 08:42  dangaosidangaosiDebugdangaosi.obj

     文件         67  2012-08-10 08:42  dangaosidangaosiDebugmt.dep

     文件     568320  2012-08-10 08:42  dangaosidangaosiDebugvc90.idb

     文件     520192  2012-08-10 08:42  dangaosidangaosiDebugvc90.pdb

     文件   10693632  2013-03-03 20:25  dangaosidangaosi.ncb

     文件        890  2012-08-05 15:47  dangaosidangaosi.sln

    ..A..H.     17408  2013-03-03 20:25  dangaosidangaosi.suo

     文件      34816  2012-08-10 08:42  dangaosiDebugdangaosi.exe

     文件     362300  2012-08-10 08:42  dangaosiDebugdangaosi.ilk

     文件     887808  2012-08-10 08:42  dangaosiDebugdangaosi.pdb

     目录          0  2012-08-10 08:42  dangaosidangaosiDebug

     目录          0  2012-08-05 15:59  dangaosidangaosi

     目录          0  2012-08-10 08:42  dangaosiDebug

     目录          0  2013-03-03 20:25  dangaosi

----------- ---------  ---------- -----  ----

             13175940                    21


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)