fileDirectShow.h
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
/*
*  DirectShow.h
*
*  Created by Daisuke Nogami on Nov, 05.
*  opyright 2005 Daisuke Nogami [null-null.net]. Some rights reserved.
*/
 
#pragma once
 
// DirectShow
#include <dshow.h>
#include <qedit.h>
 
// OpenCV
#include "cv.h"
#include "highgui.h"
#include "cvcam.h"
 
// vector
#include <vector>
using namespace std;
 
////////////////////////////////////////////////////
// nlVector
////////////////////////////////////////////////////
 
class nlVector{
public:
  int x, y;
 
  nlVector( int x, int y ){
    this->x = x;
    this->y = y;
  }
  nlVector(){
    x = y = 0;
  }
};
 
////////////////////////////////////////////////////
// nlRectangle
////////////////////////////////////////////////////
 
class nlRectangle{
public:
  float x, y, vx, vy;
 
  nlRectangle( float x, float y, float vx, float vy ){
    this->x = x;
    this->y = y;
    this->vx = vx;
    this->vy = vy;
  }
  nlRectangle(){
    x = y = vx = vy;
  }
};
 
////////////////////////////////////////////////////
// DirectShow & OpenCV wrapper class
////////////////////////////////////////////////////
 
class DirectShow{
private:
  //ds
  IGraphBuilder * pGraph;
  IMediaControl * pMC;
  ICaptureGraphBuilder2 * pCapture;
  IBaseFilter     *pF;
  ISampleGrabber  *pGrab;
  ICreateDevEnum * pDevEnum;
  
  long biSizeImage;
  BITMAPINFOHEADER bih;
  char* lpBmpData;
 
  //cv
  IplImage* perFrame_img; // frame per..
  IplImage* temp_perFrame_img; // temp
  IplImage* bg_img; // background
 
  // initialization & release
  void init();
  void Release();
 
  // update background image
  void update_shade( IplImage* frame_img, IplImage* dst_img );
  // contour extraction
  void contourExtraction( IplImage* img );
  // calculation motion flow
  void calcMotionFlow( IplImage* img );
  // calculation optical flow
  void calcOpticalFlow( IplImage* img );
 
 
public:
  DirectShow();
  ~DirectShow();
 
  // texture
  unsigned char* btmp;
  int _cHeight;
  int _cWidth;
 
  // motion flows
  vector<nlRectangle> mfv;
  
  void start();
  void proc();
  void shade();
};
[トップ] [一覧] [最終更新] [検索] [バックアップ]