基于opencv的单高斯背景建模demo,直接运行即可,使用摄像头获取视频,VS2010直接使用
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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
/*******************单高斯背景建模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.em
文件 728 2012-08-10 08:42 dangaosidangaosiDebugdangaosi.exe.em
文件 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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)