• 大小: 1.26MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-16
  • 语言: C/C++
  • 标签: VC++  

资源简介

使用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


评论

共有 条评论