资源简介
本程序通过对采集到的视频序列进行分析,采用背景差法和自适应背景更新的方法对,进入视频序列或摄像头中的人体进行自动检测
代码片段和文件信息
//利用背景建模检测运动物体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
相关资源
- 背景差分法 多目标跟踪
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- 用两个摄像头实现,双目标定,双目
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 基于opencv的图像识别识别图像中的色
- 背景差分法检测
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
- opencv视觉测距
- 基于Qt和opencv的身份证号码识别系统
- opencv_ffmpeg249.dll
- SfM稀疏三维点云重建--完整工程文件
- 基于opencv的数人头程序源代码
- 利用OpenCV中的Stitcher类实现全景图像拼
- opencv实现的sift算法源码,包含了图像
- openCV 上的小波变换
- 基于OPENCV的车牌识别系统设计
- 617张国内车牌60-17bmp图片用于OpenCV正样
- hog特征提取,c版本代码
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
评论
共有 条评论