HandVu.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: HandVu.h,v 1.24 2005/10/30 21:16:04 matz Exp $
  22. **/
  23. // C-interface
  24. #if !defined(__HANDVU_H__INCLUDED_)
  25. #define __HANDVU_H__INCLUDED_
  26. #include <cv.h>
  27. #include <string>
  28. #include <vector>
  29. using namespace std;
  30. /* reference time
  31. */
  32. #ifdef WIN32
  33. typedef __int64 REFERENCE_TIME;
  34. typedef REFERENCE_TIME RefTime;
  35. #else
  36. typedef long long RefTime;
  37. #endif // WIN32
  38. /* state for an object such as the right hand
  39. */
  40. typedef struct _hvState {
  41.   int        obj_id;
  42.   bool       tracked;
  43.   bool       recognized;
  44.   double     center_xpos, center_ypos;
  45.   double     scale;
  46.   string     posture;
  47.   RefTime    tstamp;
  48. } hvState;
  49. enum hvAction {         // specify recommendations to application:
  50.   HV_INVALID_ACTION = 0,
  51.   HV_PROCESS_FRAME = 1, // fully process and display the frame
  52.   HV_SKIP_FRAME = 2,    // display but do not further process
  53.   HV_DROP_FRAME = 3     // do not display the frame
  54. };
  55.   
  56. void hvInitialize(int width, int height);
  57. void hvUninitialize();
  58. void hvLoadConductor(const string& filename);
  59. bool hvConductorLoaded();
  60. void hvStartRecognition(int obj_id=0);
  61. void hvStopRecognition(int obj_id=0);
  62. hvAction hvProcessFrame(IplImage* inOutImage, IplImage* rightImage=NULL);
  63. bool hvIsActive();
  64. void hvAsyncSetup(int num_buffers, void (*cb)(IplImage* img, hvAction action));
  65. void hvAsyncGetImageBuffer(IplImage** pImage, int* pBufferID);
  66. void hvAsyncProcessFrame(int bufferID);
  67. void hvGetState(int obj_id, hvState& state);
  68. void hvSetDetectionArea(int left, int top, int right, int bottom);
  69. void hvGetDetectionArea(int* pLeft, int* pTop, int* pRight, int* pBottom);
  70. void hvRecomputeNormalLatency();
  71. void hvSetOverlayLevel(int level);
  72. int hvGetOverlayLevel();
  73. void hvCorrectDistortion(bool enable=true);
  74. bool hvIsCorrectingDistortion();
  75. bool hvCanCorrectDistortion();
  76. void hvSetAdjustExposure(bool enable=true);
  77. bool hvCanAdjustExposure();
  78. bool hvIsAdjustingExposure();
  79. void hvSetLogfile(const string& filename);
  80. void hvSaveScannedArea(IplImage* pImg, string& picfile);
  81. void hvSaveImageArea(IplImage* pImg, int left, int top, int right, int bottom, string& picfile);
  82. void hvSetSaveFilenameRoot(const string& fname_root);
  83. void hvSetDoTrack(bool do_track);
  84. void hvStartGestureServer(int port, int max_num_clients=10);
  85. void hvStartOSCServer(const string& desthost, int destport);
  86. void hvStopGestureServer(int port);
  87. void hvStopOSCServer(const string& desthost, int destport);
  88. /** verbosity: 0 minimal, 3 maximal
  89. */
  90. void hvGetVersion(string& version, int verbosity);
  91. #endif // __HANDVU_H__INCLUDED_