亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? w4運動檢測06-09-18.cpp

?? 此程序是針對視頻中的運動目標的檢測
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/************************************************** * 背景建模,運動物體檢測 *       **************************************************/#ifdef _CH_
#pragma package <opencv>
#endif

#ifndef _EiC
#include <stdio.h>#include <cv.h>#include <cxcore.h>#include <highgui.h>
#include <ctype.h>
#endif
#define FALSE 0
#define TRUE  1
#define EPS	1e-6
#define	SQUARE(x)	((x) * (x))
#define ZERO(x)		(fabs((x)) < EPS ? TRUE : FALSE)
#define LearnFrame 20    
#define NUM  20
#define PARAMETER 2
IplConvKernel* element = 0;

const int element_shape = CV_SHAPE_RECT;
//形態(tài)學濾波函數(shù)操作
void Opening(IplImage* src, IplImage* image, IplImage* dest, int pos);   
void Closing(IplImage* src, IplImage* image, IplImage* dest, int pos); 
void Erosion(IplImage* src, IplImage* dest, int pos);
void Dilation(IplImage* src, IplImage* dest, int pos);  

CvMemStorage* storage = 0; // temporary storage

int i;
CvPoint pt;
CvPoint pre_pt;
int N;

int main(  ){  //聲明當前幀IplImage指針  IplImage* pFrame = NULL;   IplImage* pFrImg = NULL;  IplImage* pBkImg = NULL;
  IplImage* pCurImg = NULL;
  IplImage* pTempImg = NULL;  CvMat* MinValue = NULL;
  CvMat* MaxValue = NULL;
  CvMat* MaxFrameDiff = NULL;
  CvMat* MeanValue = NULL;
  CvMat* SigmaValue = NULL;
  CvMat* MedianFrameDiff = NULL;
  //運動參數(shù)矩陣
  CvMat* gS = NULL;
  CvMat* mS = NULL;
  CvMat* hS = NULL;

  IplImage** buf = NULL;
  
  CvCapture* Capture = NULL;    int nFrmNum = 0;
  int thresh=0;
  int sum=0;   
  int alert=0;
  int i,j,w,x;
  double temp[NUM];
  double temp1[NUM];
  double tmp;
  int countframe=0;
  
  #define MinValueMat(ROW,COL) ((uchar *)(MinValue->data.ptr + MinValue->step *(ROW)))[(COL)]
  #define MaxValueMat(ROW,COL) ((uchar *)(MaxValue->data.ptr + MaxValue->step *(ROW)))[(COL)]
  #define MaxFrameDiffMat(ROW,COL) ((uchar *)(MaxFrameDiff->data.ptr + MaxFrameDiff->step *(ROW)))[(COL)]
  #define MedianFrameDiffMat(ROW,COL) ((uchar *)(MedianFrameDiff->data.ptr + MedianFrameDiff->step *(ROW)))[(COL)]

  #define MeanValueMat(ROW,COL) ((float *)(MeanValue->data.fl + MeanValue->step/sizeof(float) *(ROW)))[(COL)]
  #define SigmaValueMat(ROW,COL) ((float *)(SigmaValue->data.fl + SigmaValue->step/sizeof(float) *(ROW)))[(COL)]

  #define BufMAT(NUMBER,ROW,COL) ((uchar*)(buf[(NUMBER)]->imageData + buf[(NUMBER)]->widthStep*(ROW)))[(COL)]
  
  #define gSMat(ROW,COL) ((uchar *)(gS->data.ptr + gS->step *(ROW)))[(COL)]
  #define mSMat(ROW,COL) ((uchar *)(mS->data.ptr + mS->step *(ROW)))[(COL)]
  #define hSMat(ROW,COL) ((uchar *)(hS->data.ptr + hS->step *(ROW)))[(COL)]

  #define BkImg(ROW,COL) ((uchar*)(pBkImg->imageData + pBkImg->widthStep*(ROW)))[(COL)]
  #define FrImg(ROW,COL) ((uchar*)(pFrImg->imageData + pFrImg->widthStep*(ROW)))[(COL)]
  #define TempImg(ROW,COL) ((uchar*)(pTempImg->imageData + pTempImg->widthStep*(ROW)))[(COL)]
  #define CurImg(ROW,COL) ((uchar*)(pCurImg->imageData + pCurImg->widthStep*(ROW)))[(COL)]
  
  //創(chuàng)建窗口  cvNamedWindow("video", 2);  cvNamedWindow("back",2);  cvNamedWindow("fore",2);
  cvNamedWindow("temp",2);
  //  Capture =cvCaptureFromCAM(0);
  Capture = cvCaptureFromFile("I:\\經(jīng)典運動檢測\\99.avi");  pFrame = cvQueryFrame( Capture );
  
  //使窗口有序排列
  cvMoveWindow("video", 30, 20);
  cvMoveWindow("back", 50+2*pFrame->width, 20);
  cvMoveWindow("fore", 30, 110+2*pFrame->height);
  cvMoveWindow("temp", 50+2*pFrame->width, 110+2*pFrame->height);

  //申請內(nèi)存,并初始化
  //背景、前景、臨時圖像
  pBkImg = cvCreateImage(cvSize(pFrame->width, pFrame->height),  IPL_DEPTH_8U,1);
  pFrImg = cvCreateImage(cvSize(pFrame->width, pFrame->height),  IPL_DEPTH_8U,1);
  pTempImg = cvCreateImage(cvSize(pFrame->width, pFrame->height),  IPL_DEPTH_8U,1);
  pCurImg = cvCreateImage(cvSize(pFrame->width, pFrame->height),  IPL_DEPTH_8U,1);
  //均值矩陣,最大值矩陣、最小值矩陣、最大相鄰幀差
  MinValue = cvCreateMat(pFrame->height, pFrame->width, CV_8UC1);
  MaxValue = cvCreateMat(pFrame->height, pFrame->width, CV_8UC1);
  MaxFrameDiff = cvCreateMat(pFrame->height, pFrame->width, CV_8UC1);
  MedianFrameDiff= cvCreateMat(pFrame->height, pFrame->width, CV_8UC1);

  gS = cvCreateMat(pFrame->height, pFrame->width, CV_8UC1);
  mS = cvCreateMat(pFrame->height, pFrame->width, CV_8UC1);
  hS = cvCreateMat(pFrame->height, pFrame->width, CV_8UC1);
    
  cvZero(MinValue);cvZero(MaxValue);cvZero(MaxFrameDiff);
  cvZero(gS);cvZero(mS);cvZero(hS);
  
  //均值矩陣、方差矩陣
  MeanValue = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);
  SigmaValue = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);
  cvZero(MeanValue);cvZero(SigmaValue);

  //初始化時使用的NUM幀數(shù)據(jù)
  buf = (IplImage**)malloc(NUM*sizeof(buf[0]));
  memset( buf, 0, NUM * sizeof(buf[0]) );
  for( i = 0; i < NUM; i++ ) 
  {
      buf[i] = cvCreateImage(cvSize(pFrame->width, pFrame->height),  IPL_DEPTH_8U,1);
      cvZero( buf[i] );
  }

  storage = cvCreateMemStorage(0);
	        //逐幀讀取視頻  while(pFrame = cvQueryFrame( Capture ))  {            if(countframe<0)
	  {
		  countframe++;
		  continue;
	  }            if(nFrmNum<LearnFrame)//背景模型初始化	  {	      
	      //轉化成單通道圖像再處理	      cvCvtColor(pFrame, pTempImg, CV_BGR2GRAY);
	      //中值濾波 
          cvSmooth( pTempImg, pCurImg, CV_MEDIAN , 3, 0, 0 );//CV_GAUSSIAN or CV_MEDIAN
	
          cvFlip( pCurImg, pCurImg, 0 );
		  cvCopy( pCurImg, buf[nFrmNum], 0 );
		  nFrmNum++;
		  printf("frame= %d \n",nFrmNum);
	      continue;	  }
	  else if (nFrmNum==LearnFrame)   //建立 W4 背景模型
	  {
		  nFrmNum++;
		  cvCvtColor(pFrame, pTempImg, CV_BGR2GRAY);
		  cvFlip( pTempImg, pTempImg, 0 );
	      //中值濾波 
          cvSmooth( pTempImg, pCurImg, CV_MEDIAN , 3, 0, 0 );//CV_GAUSSIAN or CV_MEDIAN
          for (w = 1; w < NUM; w++)
              cvCopy( buf[w], buf[w-1], 0 );
          cvCopy( pCurImg, buf[NUM-1], 0 );

		  for ( i = 0; i < pFrame->height; i++)
		  {
		     for ( j = 0; j < pFrame->width; j++)
			 {   
				 double temp_deviation[NUM];
				 temp[0] = BufMAT(0,i,j);
				 //臨時存儲
				 for ( w = 1; w < NUM; w++)
				 {
				    temp[w] = BufMAT(w,i,j);
					temp_deviation[w-1] = abs(temp[w]-temp[w-1]);      //臨時離差
				 }
                 //排序取其數(shù)據(jù)的中值
				 for (w = 0; w < NUM; w++)
				 {
				    for ( x = 0; x < NUM - w - 1; x++)
					{
					    if (temp[x] > temp[x + 1])
						 {
						    tmp = temp[x];
						    temp[x] = temp[x + 1];
						    temp[x + 1] = tmp;
						}
					}
				 }
				 //對離差進行排序
				 for (w = 0; w < NUM-1; w++)
				 {
				    for ( x = 0; x < NUM - w - 2; x++)
					{
						if (temp_deviation[x] > temp_deviation[x + 1])
						 {
						    tmp = temp_deviation[x];
						    temp_deviation[x] = temp_deviation[x + 1];
						    temp_deviation[x + 1] = tmp;
						}
					}
				 }
			     //得到中值數(shù),以及中值離差,利用中值濾波,剔除非背景點
			     tmp = temp[NUM / 2];
			     int tindex = 0;
			     for (w = 0; w < NUM; w++)
				 {
				    if (abs(BufMAT(w,i,j) - tmp) < 4 * temp_deviation[(NUM-1)/2])
					{
					    temp[tindex] = BufMAT(w,i,j);
					    tindex++;
					}
				 }
				 //重新計算前景參數(shù)
				 double max_deviation = 0.0;    //最大離差
				 double median_deviation= 0.0;  //中值離差
				 double mean = 0.0;             //均值
				 mean=temp[0];
				 for ( w = 1; w < tindex-1; w++)
				 {
				    tmp=temp[w]-temp[w-1];
					if (max_deviation<tmp)
					{
                        max_deviation=tmp;
					}
					temp_deviation[w] = abs( temp[w] - temp[w-1] );
					mean += 1.0*( temp[w] - mean) / (w+1);
				 }
				 double variance=0.0;            //標準方差
				 for (w = 0; w < tindex-1; w++)
				 {
				      tmp = (temp[w] - mean);
                      variance += (tmp * tmp - variance) / (w + 1);
				 }
				 variance=sqrt(1.0 * variance * (tindex-1)/ (tindex-2) );
				 
				 //背景排序求中值,最大值最小值等
			     for (w = 0; w < tindex; w++)
				 {
				    for (int x = 0; x < tindex - w - 1; x++)
					{
					    if (temp[x] > temp[x + 1])
						{
						    tmp = temp[x];
						    temp[x] = temp[x + 1];
						    temp[x + 1] = tmp;
						}
					}
				 }
				 //對背景離差進行排序,取其中值
				 for (w = 0; w < tindex-1; w++)
				 {
				    for ( x = 0; x < tindex - w - 2; x++)
					{
						if (temp_deviation[x] > temp_deviation[x + 1])
						 {
						    tmp = temp_deviation[x];
						    temp_deviation[x] = temp_deviation[x + 1];
						    temp_deviation[x + 1] = tmp;
						}
					}
				 }
		         int ttindex= (tindex-1)/2;
				 
				 if(temp_deviation[(tindex-2)/2]<PARAMETER)
				 {
                     temp_deviation[(tindex-2)/2]=PARAMETER;
				 }
				 if (variance<PARAMETER)
				 {
					 variance=PARAMETER;
				 }
				 if (max_deviation<PARAMETER)
				 {
                     max_deviation=PARAMETER;
				 }
				 //背景參數(shù)
			     MinValueMat(i,j) = temp[0];                             //最小值
			     MaxValueMat(i,j) = temp[tindex - 1];                    //最大值
		      	 MaxFrameDiffMat(i,j) = max_deviation;                   //相鄰幀最大差
				 MedianFrameDiffMat(i,j) = temp_deviation[(tindex-2)/2]; //相鄰幀差的中值
			     SigmaValueMat(i,j) = variance;                          //標準方差	
			     MeanValueMat(i,j) = mean;                               //均值
			     BkImg(i,j)=temp[ttindex];                               //背景值
             }
		  }
		  printf("initialization ofbackground model is completed!\n");
	  }      else        //背景減并進行背景更新
	  {       
		  countframe++;
		  printf(" The current frame is %d ; \n",countframe);
		  //提取前景目標
		  cvCvtColor(pFrame, pTempImg, CV_BGR2GRAY);
		  cvFlip( pTempImg, pTempImg, 0 );
	      //中值濾波 
          cvSmooth( pTempImg, pCurImg, CV_MEDIAN , 3, 0, 0 );//CV_GAUSSIAN or CV_MEDIAN  	      	   
/*
		  cvConvert(Cur_Frame, pFrameMat);

	      cvAbsDiff( pFrameMat, MinValue, pSubMat1 );  
		  cvCmp( pSubMat1, MaxFrameDiff, pSubMat1, CV_CMP_LE   );
		  cvAbsDiff( pFrameMat, MaxValue, pSubMat2 );  
		  cvCmp( pSubMat2, MaxFrameDiff, pSubMat2, CV_CMP_LE   );
          //確定前景背景
		  cvOr( pSubMat1, pSubMat2, pFrMat, 0 );

		  cvAnd( pFrameMat, pFrMat, pFrImg, pFrMat );
 
		  cvConvert(pBkMat, pBkImg);
		  cvConvert(pFrMat, pTempImg);
		  
		  cvShowImage("background", pBkImg);  //顯示背景圖像
	      cvShowImage("foreground", pFrImg);  //顯示前景圖像
          cvShowImage("temp", pTempImg);      //顯示二值前景圖像
*/		  //%%%%%%%%%%%%%%%%%%%%%%%
   /*     計算相關的運動參數(shù)矩陣
		  //a detection support map(gS) matrix
          cvAddS( gS, cvScalarAll( 1 ) , gS, pBkMat );
          //a motion support map(mS) matrix

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内成+人亚洲+欧美+综合在线| 暴力调教一区二区三区| 国产精品亚洲第一| 欧美视频一区二区在线观看| 久久精品亚洲麻豆av一区二区| 夜夜爽夜夜爽精品视频| 国产激情一区二区三区四区 | 亚洲国产一区二区三区| www.av亚洲| 精品99一区二区| 性做久久久久久久免费看| 成人永久免费视频| 精品国产青草久久久久福利| 天天综合网天天综合色| 91免费看片在线观看| 国产免费观看久久| 韩国成人在线视频| 日韩精品一区二区三区四区 | 不卡视频一二三| 精品久久久三级丝袜| 婷婷激情综合网| 欧美性猛交一区二区三区精品| 国产精品久久久久久久久搜平片| 国产麻豆精品一区二区| 精品欧美一区二区在线观看| 免费视频一区二区| 欧美一区二区在线播放| 午夜精品一区二区三区三上悠亚| 91久久精品一区二区| ●精品国产综合乱码久久久久| 高清shemale亚洲人妖| 久久久久久一二三区| 国产自产v一区二区三区c| 91精品国产综合久久久久久漫画 | 日韩精品乱码免费| 欧美日韩国产小视频在线观看| 亚洲国产精品综合小说图片区| 91精品国产免费| 日本伊人色综合网| 日韩欧美电影一区| 国产综合色产在线精品| 国产婷婷色一区二区三区| 国产成人精品一区二区三区四区 | 这里只有精品免费| 蜜臀av性久久久久蜜臀av麻豆| 日韩视频一区二区| 国产精品亚洲综合一区在线观看| 日本一区二区免费在线观看视频| 成人av午夜影院| 一区二区三区日韩在线观看| 欧美亚洲图片小说| 蜜桃传媒麻豆第一区在线观看| 久久免费午夜影院| 99国产精品国产精品毛片| 一个色妞综合视频在线观看| 欧美福利视频一区| 国产精品中文字幕日韩精品| 中文字幕制服丝袜一区二区三区| 91成人免费在线| 精品在线亚洲视频| 国产精品国产三级国产aⅴ中文 | 国产日韩欧美亚洲| 91日韩在线专区| 青青草一区二区三区| 国产人伦精品一区二区| 欧美亚洲一区二区三区四区| 久久不见久久见中文字幕免费| 国产亚洲女人久久久久毛片| 色88888久久久久久影院野外| 免费日本视频一区| 国产精品免费aⅴ片在线观看| 欧美少妇性性性| 国产精品99久久不卡二区| 亚洲精品国久久99热| 日韩欧美第一区| 色视频欧美一区二区三区| 狠狠狠色丁香婷婷综合激情| 日韩毛片高清在线播放| 欧美大片一区二区| 日本韩国精品一区二区在线观看| 狠狠色丁香久久婷婷综合_中| 一区二区三区四区av| 久久九九99视频| 欧美一区二区三区视频免费 | 国产亚洲精品福利| 欧美三级资源在线| www..com久久爱| 国内精品免费**视频| 亚洲风情在线资源站| 国产精品福利av| 久久久久久久久久久黄色| 3d成人h动漫网站入口| 91免费在线视频观看| 国产v日产∨综合v精品视频| 日本系列欧美系列| 亚洲国产精品天堂| 亚洲免费成人av| 亚洲不卡在线观看| 亚洲免费av网站| 成人欧美一区二区三区白人 | 国产精品欧美一区喷水| 欧美成人一区二区三区在线观看| 欧美在线免费观看亚洲| 99re成人在线| 暴力调教一区二区三区| 成人做爰69片免费看网站| 国产真实精品久久二三区| 日本v片在线高清不卡在线观看| 亚洲激情男女视频| 亚洲视频香蕉人妖| 亚洲欧美色一区| 日韩码欧中文字| 亚洲图片你懂的| 亚洲欧美日韩系列| |精品福利一区二区三区| 中文成人综合网| 国产精品女主播av| 综合久久一区二区三区| 最新国产の精品合集bt伙计| 亚洲女人****多毛耸耸8| 亚洲人成网站影音先锋播放| 亚洲精品videosex极品| 一区二区三区美女| 午夜久久久久久久久| 日韩精品91亚洲二区在线观看| 亚洲综合一二区| 香蕉影视欧美成人| 青青草原综合久久大伊人精品 | 在线免费不卡电影| 一本一道久久a久久精品| 色av成人天堂桃色av| 欧美日韩亚洲不卡| 日韩欧美精品在线| 久久久蜜臀国产一区二区| 国产视频亚洲色图| 亚洲黄色免费电影| 日本中文字幕一区二区视频| 国内精品免费**视频| caoporn国产精品| 91福利精品第一导航| 欧美一区二区观看视频| 久久久久久久一区| 一区二区三区中文在线观看| 午夜久久久影院| 国产mv日韩mv欧美| 欧美视频一区在线| 精品美女一区二区三区| 国产精品国产馆在线真实露脸| 亚洲国产综合91精品麻豆| 免费在线看一区| 91丨国产丨九色丨pron| 91麻豆精品久久久久蜜臀| 欧美激情一区二区三区| 亚洲chinese男男1069| 国产一区二区看久久| 日本乱码高清不卡字幕| 日韩午夜激情视频| 亚洲色欲色欲www| 麻豆91精品视频| 在线观看av一区二区| 久久先锋影音av鲁色资源网| 亚洲精品成人精品456| 国产精品自产自拍| 欧美人与禽zozo性伦| 国产精品久久久久久久久免费丝袜| 亚洲.国产.中文慕字在线| 粉嫩av一区二区三区在线播放| 欧美精品九九99久久| 国产精品进线69影院| 精品在线播放免费| 欧美日韩dvd在线观看| 国产精品成人免费在线| 狠狠色综合日日| 制服丝袜中文字幕亚洲| 亚洲精品综合在线| 成人av电影在线| 2023国产精华国产精品| 日韩国产欧美三级| 欧美中文字幕亚洲一区二区va在线| 国产喂奶挤奶一区二区三区| 五月天一区二区三区| 日本韩国欧美一区二区三区| 中文在线资源观看网站视频免费不卡| 日本不卡在线视频| 欧美老人xxxx18| 亚洲最快最全在线视频| 91丝袜高跟美女视频| 国产精品不卡视频| 成人va在线观看| 中文一区二区完整视频在线观看| 久久se精品一区精品二区| 911国产精品| 婷婷夜色潮精品综合在线| 欧美色网站导航| 亚洲午夜电影网| 欧美猛男超大videosgay| 一卡二卡欧美日韩| 欧美日韩日日摸| 日精品一区二区三区| 91精品国产综合久久福利|