顯示具有 OpenCV 標籤的文章。 顯示所有文章
顯示具有 OpenCV 標籤的文章。 顯示所有文章

2014年4月3日 星期四

Build background with cvRunningAvg

  1. #include <cv.h>
  2. #include <highgui.h>
  3.  
  4. int main()
  5. {
  6.      IplImage *pFrame = NULL;
  7.      IplImage *pGrayImg = NULL;
  8.      IplImage *pFGImg = NULL;
  9.      IplImage *pBGImg_8U = NULL;
  10.      IplImage *pBGImg_32F = NULL;
  11.      IplConvKernel * pKernel = NULL;
  12.      CvCapture *pCapture = cvCreateCameraCapture(1);
  13.  
  14.      cvNamedWindow("webcam", 1);
  15.      cvNamedWindow("background", 1);
  16.      cvNamedWindow("foreground", 1);
  17.  
  18.       pKernel = cvCreateStructuringElementEx( 5, 3, 0,0
  19.         , CV_SHAPE_ELLIPSE, NULL);
  20.  
  21.      if(!(pFrame = cvQueryFrame(pCapture)))
  22.      {
  23.          fprintf(stderr, "Can not open");
  24.          return -1;
  25.      }
  26.      else
  27.      {
  28.          pGrayImg = cvCreateImage(cvGetSize(pFrame), IPL_DEPTH_8U, 1);
  29.          pFGImg = cvCreateImage(cvGetSize(pFrame), IPL_DEPTH_8U, 1);
  30.          pBGImg_8U = cvCreateImage(cvGetSize(pFrame), IPL_DEPTH_8U, 1);
  31.          pBGImg_32F = cvCreateImage(cvGetSize(pFrame), IPL_DEPTH_32F, 1);
  32.    
  33.          cvCvtColor(pFrame, pGrayImg, CV_BGR2GRAY);
  34.  

Background Subtraction Using Mask

  1. #include <highgui.h>
  2. #include <cv.h>
  3. int main()
  4. {
  5.         IplImage* pFrame=0;
  6.         IplImage* pGrayImg=0;
  7.         IplImage* pFGImg=0;
  8.         IplImage* pBGImg=0;
  9.         IplImage* pBGImg_Gray=0;
  10.         IplImage* temp=0;
  11.         CvCapture* cap = cvCreateCameraCapture(1);
  12.  
  13.         if(!(pFrame = cvQueryFrame(cap))) return -1;
  14.         else
  15.         {
  16.                 pFGImg = cvCreateImage(cvGetSize(pFrame), IPL_DEPTH_8U, 3);
  17.                 pGrayImg = cvCreateImage(cvGetSize(pFrame), IPL_DEPTH_8U, 1);
  18.                 temp = cvCreateImage(cvGetSize(pFrame), IPL_DEPTH_8U, 1);
  19.                 pBGImg_Gray = cvCreateImage(cvGetSize(pFrame), IPL_DEPTH_8U, 1);
  20.                 pBGImg = cvCloneImage(pFrame);
  21.         }
  22.  
  23.         while(1){
  24.                 pFrame=cvQueryFrame(cap);
  25.                 cvShowImage("present",pFrame);
  26.                 cvShowImage("background",pBGImg);
  27.  
  28.                 cvCvtColor(pFrame, pGrayImg, CV_BGR2GRAY);
  29.                 cvCvtColor(pBGImg, pBGImg_Gray, CV_BGR2GRAY);
  30.                 cvAbsDiff(pGrayImg, pBGImg_Gray, temp);
  31.                 cvThreshold(temp, temp, 40, 255, CV_THRESH_BINARY);
  32.  
  33.                 cvZero(pFGImg);
  34.                 cvCopy(pFrame, pFGImg, temp);
  35.                 cvShowImage("foreground", pFGImg);
  36.        
  37.                 int key=cvWaitKey(1);
  38.                 if(key==27)break;
  39.                 if(key=='b') cvCopyImage(pFrame, pBGImg);
  40.  
  41.         }
  42.         cvReleaseCapture(&cap);
  43. }