• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: C/C++
  • 标签: opencv  

资源简介

基于opencv的视频图像背景差分算法例子

资源截图

代码片段和文件信息

#include “highgui.h“
#include “cv.h“
#include 
#include“example.h“ 
int main(int argcchar**argv)
{
//声明指针,矩阵
IplImage*image=NULL;  
IplImage*backimage=NULL;
IplImage*foreimage=NULL;
IplImage*tank=NULL;

CvMat*imagemat=NULL;
CvMat*foremat=NULL;
CvMat*backmat=NULL;
CvCapture*capture=NULL;
int num=0;
//创建窗口
cvNamedWindow(“cvcamwindow“CV_WINDOW_AUTOSIZE);
cvNamedWindow(“foreground“1);
cvNamedWindow(“background“1);
cvNamedWindow(“wo“1);
//读取摄像头
if(argc==1||(argc==2&&strlen(argv[1])==1&&isdigit(argv[1][0])))
capture=cvCaptureFromCAM(argc==2?argv[1][0]-‘0‘:0);
  else if(argc==2)
  capture=cvCaptureFromAVI(argv[1]);
    
//声明视频结构
int isColor = 1;
int frameW=160;
int frameH=120;
int fps=8;
   CvVideoWriter* camWriter=cvCreateVideoWriter(“E:\\directx\\jianhua12.avi“-1fpscvSize(frameWframeH)isColor);
 if(!capture)
  {
  fprintf(stderr“could not initialize capturing...\n“);
          return 0;
      }

//处理图像
  while(image=cvQueryframe(capture))
  {
  num++;
  if(num==1)//第一针申请内存
  { 
foreimage=cvCreateImage(cvGetSize(image)81);
     backimage=cvCreateImage(cvGetSize(image)81);
            tank=cvCreateImage(cvGetSize(image)83);

            backmat=cvCreateMat(image->heightimage->widthCV_32FC1);
            foremat=cvCreateMat(image->heightimage->widthCV_32FC1);
            imagemat=cvCreateMat(image->heightimage->widthCV_32FC1);

 //转换成单通道处理
 cvCvtColor(imagebackimageCV_BGR2GRAY);
        cvCvtColor(imageforeimageCV_BGR2GRAY);
            //矩阵初始化
 cvConvert(foreimageforemat);
            cvConvert(foreimagebackmat);
            cvConvert(foreimageimagemat);
          }
  else
  {
  cvCvtColor(imageforeimageCV_BGR2GRAY);
  cvConvert(foreimageimagemat);
  
  //高斯滤波,平滑图像
  cvSmooth(im

评论

共有 条评论