VisionConductor.h
上传用户:lijia5631
上传日期:2008-11-10
资源大小:1214k
文件大小:3k
源码类别:

视频捕捉/采集

开发平台:

MultiPlatform

  1. /**
  2.   * HandVu - a library for computer vision-based hand gesture
  3.   * recognition.
  4.   * Copyright (C) 2004 Mathias Kolsch, matz@cs.ucsb.edu
  5.   *
  6.   * This program is free software; you can redistribute it and/or
  7.   * modify it under the terms of the GNU General Public License
  8.   * as published by the Free Software Foundation; either version 2
  9.   * of the License, or (at your option) any later version.
  10.   *
  11.   * This program is distributed in the hope that it will be useful,
  12.   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.   * GNU General Public License for more details.
  15.   *
  16.   * You should have received a copy of the GNU General Public License
  17.   * along with this program; if not, write to the Free Software
  18.   * Foundation, Inc., 59 Temple Place - Suite 330, 
  19.   * Boston, MA  02111-1307, USA.
  20.   *
  21.   * $Id: VisionConductor.h,v 1.18 2005/10/30 21:16:04 matz Exp $
  22. **/
  23. #ifndef __VISIONCONDUCTOR_H__
  24. #define __VISIONCONDUCTOR_H__
  25. #if _MSC_VER > 1000
  26. #pragma once
  27. #endif // _MSC_VER > 1000
  28. #include <string>
  29. using namespace std;
  30. #include "HandVu.hpp"
  31. #include "Mask.h"
  32. #include "Quadruple.h"
  33. class VisionConductor 
  34. {
  35.  public:
  36.   VisionConductor();
  37.   ~VisionConductor();
  38. public:
  39.   // Operations
  40.  public:
  41.   void Load(string filename);
  42.   bool IsLoaded() const;
  43.   ConstMaskIt GetMask(const string& name) const;
  44.  protected:
  45. #pragma warning (disable: 4786)
  46.   void ParseFromFile(const string& filename);
  47.   int ReadScannerData(ifstream& file, const string filename, const string type);
  48. #pragma warning (default: 4786)
  49.   void LoadMask();
  50.   void SanityCheckMasks();
  51. public:
  52.   enum TrackingType {
  53.     VC_TT_UNDEF = 0,
  54.     VC_TT_OPTICAL_FLOW_ONLY = 1,
  55.     VC_TT_OPTICAL_FLOW_FLOCK = 2,
  56.     VC_TT_OPTICAL_FLOW_COLOR = 4,
  57.     VC_TT_OPTICAL_FLOW_COLORFLOCK = 8,
  58.     VC_TT_CAMSHIFT_HSV = 16,
  59.     VC_TT_CAMSHIFT_LEARNED = 32,
  60.     VC_TT_CAMSHIFT = VC_TT_CAMSHIFT_HSV|VC_TT_CAMSHIFT_LEARNED,
  61.     VC_TT_OPTICAL_FLOW = VC_TT_OPTICAL_FLOW_ONLY|VC_TT_OPTICAL_FLOW_FLOCK|VC_TT_OPTICAL_FLOW_COLORFLOCK
  62.   };
  63.  protected:
  64.   // general
  65.   CQuadrupleVector        m_orig_areas;
  66.   MaskMap                 m_masks;
  67.   bool                    m_is_loaded;
  68.   string                  m_camera_calib;
  69.   bool                    m_adjust_exposure;
  70.   // detection
  71.   int                     m_dt_cascades_start;
  72.   int                     m_dt_cascades_end;
  73.   long                    m_dt_min_match_duration;
  74.   double                  m_dt_radius;
  75.   double                  m_dt_min_color_coverage;
  76.   // tracking
  77.   int                     m_tr_cascades_start;
  78.   int                     m_tr_cascades_end;
  79.   int                     m_tr_num_KLT_features;
  80.   int                     m_tr_min_KLT_features; // how many of them must survive or tracking is aborted
  81.   int                     m_tr_winsize_width;
  82.   int                     m_tr_winsize_height;
  83.   double                  m_tr_min_feature_distance;  // min pairwise distance
  84.   double                  m_tr_max_feature_error;
  85.   TrackingType            m_tr_type;
  86.   // recognition
  87.   int                     m_rc_cascades_start;
  88.   int                     m_rc_cascades_end;
  89.   double                  m_rc_max_scan_width;
  90.   double                  m_rc_max_scan_height;
  91.   double                  m_rc_scale_tolerance;
  92.  public:
  93.   friend class HandVu;
  94. };
  95. #endif // __VISIONCONDUCTOR_H__