资源简介
使用VC++6.0 读AVI视频数据, 原代码程序, 共初学者使用.挺不错的,可以参考

代码片段和文件信息
#include “cxcore.h“
#include “cvaux.h“
#include “cvcam.h“
#include “highgui.h“
#include “cv.h“
#include “stdio.h“
int main( int argc char** argv )
{
//声明IplImage指针
IplImage* pframe = NULL;
IplImage* pFrImg = NULL;
IplImage* pBkImg = NULL;
char* videoname=“3.avi“;
CvMat* pframeMat = NULL;
CvMat* pFrMat = NULL;
CvMat* pBkMat = NULL;
//cvcamPlayAVI(videonameNULL320240mycallback);
CvCapture* pCapture = NULL;
char s[20];
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 )
//{
// fprintf(stderr “Usage: bkgrd [video_file_name]\n“);
// return -1;
//}
////打开摄像头
//if (argc ==1)
// if( !(pCapture = cvCaptureFromCAM(-1)))
// {
// fprintf(stderr “Can not open camera.\n“);
// return -2;
// }
//打开视频文件
//if(argc == 2)
//if( !(pCapture = cvCaptureFromFile(argv[1])))
if( !(pCapture = cvCaptureFromFile(videoname)))
{
fprintf(stderr “Can not open video file %s\n“ argv[1]);
return -2;
}
//逐帧读取视频
while(pframe = cvQueryframe( pCapture ))
{
nFrmNum++;
sprintf(s“frame%d.bmp“nFrmNum);
//如果是第一帧,需要申请内存,并初始化
if(nFrmNum == 1)
{
pBkImg = cvCreateImage(cvSize(pframe->width pframe->height) IPL_DEPTH_8U1);
pFrImg = cvCreateImage(cvSize(pframe->width pframe->height) IPL_DEPTH_8U1);
pBkMat = cvCreateMat(pframe->height pframe->width CV_32FC1);
pFrMat = cvCreateMat(pframe->height pframe->width CV_32FC1);
pframeMat = cvCreateMat(pframe->height pframe->width CV_32FC1);
//转化成单通道图像再处理
cvCvtColor(pframe pBkImg CV_BGR2GRAY);
cvCvtColor(pframe pFrImg CV_BGR2GRAY);
cvFlip(pBkImg NULL 0);
cvFlip(pFrImg NULL 0);
cvSaveImage(spBkImg);
cvConvert(pFrImg pframeMat);
cvConvert(pFrImg pFrMat);
cvConvert(pFrImg pBkMat);
}
else
{
cvCvtColor(pframe pFrImg CV_BGR2GRAY);
cvFlip(pFrImg NULL 0);
cvSaveImage(spFrImg);
cvConvert(pFrImg pframeMat);
//高斯滤波先,以平滑图像
//cvSmooth(pframeMat pframeMat CV_GAUSSIAN 3 0 0);
//当前帧跟背景图相减
cvAbsDiff(pframeMat pBkMat pFrMat);
//二值化前景图
cvThreshold(pFrMat pFrImg 60 255.0 CV_THRESH_BINARY);
//进行形态学滤波,去掉噪音
//cvErode(pFrImg pFrImg 0 1);
//cvDilate(pFrImg pFrImg 0 1);
//更新背景
cvRunningAvg(pframeMat pBkMat 0.003 0);
//将背景转化为图像格式,用以显示
cvConvert(pBkMat pBkImg);
//显示图像
// pFrImg->origin=1;
// pBkImg->origin=1;
cvShowImage(“video“ pframe);
cvShowImage(“background“ pBkImg);
cvShowImage(“foreground“ pFrImg);
//
cvCvtColor(pframe pBkImg CV_BGR2GRAY);
cvFlip(pBkImg NULL 0); //矩阵旋转
cvConvert(pBkImg pBkMat);
Sleep(100);
//如果有按键事件,则跳出循环
//此等待也为cvShowImage函数提供时间完成显示
//等待时间可以根据CPU速度调整
if( cvWaitKey
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 41984 2010-08-30 20:36 shipin.ncb
文件 1178 2010-08-30 20:29 shipin.plg
文件 3518 2010-08-30 20:29 shipin.cpp
文件 3479 2009-09-07 11:23 shipin.dsp
文件 537 2009-09-18 19:49 shipin.dsw
文件 53760 2010-08-30 20:36 shipin.opt
文件 172076 2010-08-30 20:29 Debug\shipin.exe
文件 202652 2010-08-30 20:29 Debug\shipin.ilk
文件 17516 2010-08-30 20:29 Debug\shipin.obj
文件 4058576 2010-08-30 20:29 Debug\shipin.pch
文件 435200 2010-08-30 20:29 Debug\shipin.pdb
文件 156672 2010-08-30 20:29 Debug\vc60.idb
文件 94208 2010-08-30 20:29 Debug\vc60.pdb
目录 0 2010-08-30 20:29 Debug
----------- --------- ---------- ----- ----
5241356 14
- 上一篇:C++ 解析H264文件
- 下一篇:伪彩色增强算法 适用于c、matlab编程
相关资源
- VC++ 多线程文件读写操作
- 移木块游戏,可以自编自玩,vc6.0编写
- VC++MFC小游戏实例教程(实例)+MFC类库
- VC++实现CMD命令执行与获得返回信息
- VC++基于OpenGL模拟的一个3维空间模型
- 基于VC++的SolidWorks二次开发SolidWorks
- 派克变换VC++源码(附文档)
- VC++ 串口
- VC++ 大富翁4_大富翁游戏源码
- VC++ 摄像头视频采集与回放源程序
- 转 VC++ 实现电子邮件(Email)发送
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- VC++ 服务程序编写及安装与卸载
- VC++6.0番茄西红柿VAXvirsual assist X完美破
- 基于改进的fcm算法的图像分割vc++
- VC++6.0 绿色版,免安装,非常好用。
- Microsoft Visual C++ 2005 Redistributable Pack
- VC++MFC课程设计的学生成绩管理系统
- 大智慧365DLL插件设计
- VC++6.0汉化包
- VC++完整商业界面源码(再上传)
- VC++编程技术600个大型项目源码.rar
- VC++实现RSA加密算法
- VC++ 中国象棋经典游戏源代码
- 郁金香VC++游戏辅助视频教程
- C语言进阶源码---基于graphics实现图书
- 摄影测量相对定向VC++程序
- VC++数字图像处理典型算法及实现
- VC++酒店客房管理系统 MFC
- 车站计算机联锁vc++6.0程序代码
评论
共有 条评论