资源简介
本程序通过对采集到的视频序列进行分析,采用背景差法和自适应背景更新的方法对,进入视频序列或摄像头中的人体进行自动检测
代码片段和文件信息
//利用背景建模检测运动物体358
#include
#include
#include
int main( int argc char** argv )//需要输入命令行的参数
{
//声明IplImage指针
IplImage* pframe = NULL; //从摄像头或者文件中抓取并返回一帧,获取真正的图像的指针
IplImage* pFrImg = NULL;//申请了8位无符号整形的内存空间将第一帧图像转换成灰度图像存的了这里,不是第一帧的也存到这里 也转成灰度,在处理,作为前景
//存放了二值化之后的前景,原来图像绝对差后存放在pFrMat
IplImage* pBkImg = NULL;//申请了8位无符号整形的内存空间将第一帧图像转换成灰度图像存的了这里,作为背景,再把背景图像转换成矩阵格式
//存储更新后的背景
CvMat* pframeMat = NULL;//存放其他帧的数组,申请32位,单精度,1通道的矩阵空间,pFrImg存的由pframe转换过来的灰度图像,再由pFrImg转换过来的矩阵存的这里pframeMat
CvMat* pFrMat = NULL;//存放其他帧和背景做绝对差的数组,
CvMat* pBkMat = NULL;//存放背景的数组
CvCapture* pCapture = NULL;//存放视频的变量,存放获取到的视频
int nFrmNum = 0;//视频的帧数
//创建窗口
cvNamedWindow(“video“ 1);//视频窗口
cvNamedWindow(“background“1);//背景窗口
cvNamedWindow(“foreground“1);//前景窗口
//使窗口有序排列,排列窗口
cvMoveWindow(“video“ 30 0);
cvMoveWindow(“background“ 360 0);
cvMoveWindow(“foreground“ 690 0);
if( argc != 2 )//按ctrl+F5后就出现了window的黑面
{
fprintf(stderr “Usage: bkgrd \n“);
return -1;
}
//打开视频文件
//在命令行上输入Debug>bkgrd.exe SampleVideo.avi 则argv[0]=bkgrd.exe;argv[1]=SampleVideo.avi
if( !(pCapture = cvCaptureFromFile(argv[1])))//cvCaptureFromFile 视频获取结构,获得视频的,如果获取的不是SampleVideo.avi这个视频则输出不能打开视频文件
//存放着视频
{
fprintf(stderr “Can not open video file %s\n“ argv[1]);
return -2;
}
//逐帧读取视频
while(pframe = cvQueryframe( pCapture ))//cvQueryframe从摄像头或者文件中抓取并返回一帧 IplImage* cvQueryframe( CvCapture* capture );
{
nFrmNum++;//执行完这条语句后,(i=3j=i++后,j=3,i=4),nFrmNum++=0,nFrmNum==1
//如果是第一帧,需要申请内存,并初始化
if(nFrmNum == 1)//如果是第一帧
{
pBkImg = cvCreateImage(cvSize(pframe->width pframe->height)//IplImage* cvCreateImage( CvSize size int depth int channels );
IPL_DEPTH_8U1); //创建一幅灰度图像,通道1,分配出了内存
pFrImg = cvCreateImage(cvSize(pframe->width pframe->height)
IPL_DEPTH_8U1); //创建一幅灰度图像,分配出了内存,无符号8位整型
pBkMat = cvCreateMat(pframe->height pframe->width CV_32FC1);
pFrMat = cvCreateMat(pframe->height pframe->width CV_32FC1);//32位,单精度,1通道
pframeMat = cvCreateMat(pframe->height pframe->width CV_32FC1);//CvMat* cvCreateMat( int rows int cols int type );
//转化成单通道图像再处理
//关键步骤---------------------------
- 上一篇:FindPass.exe
- 下一篇:中国商用密码SMS4
相关资源
- 树莓派安装ffmpeg及opencv资料
- 基于OpenCV的云台控制系统
- 基于opencv的blob分析代码
- GrabCut算法详解
- opencv中图片添加文字
- 自动聚焦源程序(基于openCV)
- QT+OpenCV+USB摄像头
- SIFT算法实现及代码详解
- opencv使用圆靶标标定相机参数
- OpenCV轮廓匹配
- OpenCVForUnity,Unity插件
- opencv 320 编译需要 vgg_generated 包
- qt+openc循线四旋翼
- Camshift 全自动跟踪算法/opencv
- OPENCV函数手册(带目录)pdf
- OpenCV3.3
- opencv实现两种手势识别
- 论文研究-改进的Vibe运动目标检测算法
- 输入多幅图像实现帧间差分实现运动
- OpenCV+SVM简单应用-------路面箭头分类
- 基于Qt与OpenCV的图片读取、保存,并利
- Cannot load info library for OpenCV解决方案文
- Xvid-1.1.3-27042008
- 使用VIBE算法进行车流量检测并消除鬼
- opencv库文件
- opencv中的cvaux.lib文件
- 背景差分与三帧差分结合的运动目标
-
opencv的各种haarcascade.xm
l文件 - opencv实现的SIFT特征提取与匹配算法
- 《学习opecnv》第十二章鸟瞰图变换可
评论
共有 条评论