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

视频捕捉/采集

开发平台:

MultiPlatform

  1. /**
  2.   * cubicles
  3.   *
  4.   * This is an implementation of the Viola-Jones object detection 
  5.   * method and some extensions.  The code is mostly platform-
  6.   * independent and uses only standard C and C++ libraries.  It
  7.   * can make use of MPI for parallel training and a few Windows
  8.   * MFC functions for classifier display.
  9.   *
  10.   * Mathias Kolsch, matz@cs.ucsb.edu
  11.   *
  12.   * $Id: cubicles.h,v 1.13 2005/01/07 23:20:52 matz Exp $
  13. **/
  14. // cubicles.h contains the public C bindings and hides all other
  15. // implementation details.
  16. //
  17. ////////////////////////////////////////////////////////////////////
  18. //
  19. // By downloading, copying, installing or using the software you 
  20. // agree to this license.  If you do not agree to this license, 
  21. // do not download, install, copy or use the software.
  22. //
  23. // Copyright (C) 2004, Mathias Kolsch, all rights reserved.
  24. // Third party copyrights are property of their respective owners.
  25. //
  26. // Redistribution and use in binary form, with or without 
  27. // modification, is permitted for non-commercial purposes only.
  28. // Redistribution in source, with or without modification, is 
  29. // prohibited without prior written permission.
  30. // If granted in writing in another document, personal use and 
  31. // modification are permitted provided that the following two
  32. // conditions are met:
  33. //
  34. // 1.Any modification of source code must retain the above 
  35. //   copyright notice, this list of conditions and the following 
  36. //   disclaimer.
  37. //
  38. // 2.Redistribution's in binary form must reproduce the above 
  39. //   copyright notice, this list of conditions and the following 
  40. //   disclaimer in the documentation and/or other materials provided
  41. //   with the distribution.
  42. //
  43. // This software is provided by the copyright holders and 
  44. // contributors "as is" and any express or implied warranties, 
  45. // including, but not limited to, the implied warranties of 
  46. // merchantability and fitness for a particular purpose are 
  47. // disclaimed.  In no event shall the copyright holder or 
  48. // contributors be liable for any direct, indirect, incidental, 
  49. // special, exemplary, or consequential damages (including, but not 
  50. // limited to, procurement of substitute goods or services; loss of 
  51. // use, data, or profits; or business interruption) however caused
  52. // and on any theory of liability, whether in contract, strict 
  53. // liability, or tort (including negligence or otherwise) arising 
  54. // in any way out of the use of this software, even if advised of 
  55. // the possibility of such damage.
  56. //
  57. ////////////////////////////////////////////////////////////////////
  58. #if !defined(__CUBICLES_H__INCLUDED__)
  59. #define __CUBICLES_H__INCLUDED__
  60. #include <cv.h>
  61. #include <string>
  62. #include <vector>
  63. using namespace std;
  64. #ifdef __cplusplus
  65. extern "C" {
  66. #endif
  67. typedef unsigned int CuCascadeID;
  68. typedef struct _CuCascadeProperties {
  69.   CuCascadeID        cascadeID;
  70.   vector<string>     names;
  71.   int                template_width, template_height;
  72.   double             image_area_ratio;
  73. } CuCascadeProperties;
  74. typedef struct _CuScannerParameters {
  75.   bool               active;
  76.   int                left, top, right, bottom;
  77.   double             start_scale, stop_scale, scale_inc_factor;
  78.   double             translation_inc_x, translation_inc_y;
  79.   bool               post_process;
  80. } CuScannerParameters;
  81. typedef struct _CuScanMatch {
  82.   int                left, top, right, bottom;
  83.   double             scale, scale_x, scale_y;
  84.   string             name;
  85. } CuScanMatch;
  86. typedef vector<CuScanMatch> CuScanMatchVector;
  87. void cuInitialize(int image_width, int image_height);
  88. void cuUninitialize();
  89. void cuLoadCascade(const string& filename, CuCascadeID* pID);
  90. void cuGetCascadeProperties(CuCascadeID cascadeID, CuCascadeProperties& cp);
  91. void cuGetScannerParameters(CuCascadeID cascadeID, CuScannerParameters& sp);
  92. void cuSetScannerParameters(CuCascadeID cascadeID, const CuScannerParameters& sp);
  93. void cuSetScannerActive(CuCascadeID cascadeID, bool active);
  94. void cuSetScanArea(CuCascadeID cascadeID, int left, int top, int right, int bottom);
  95. void cuSetScanScales(CuCascadeID cascadeID, double start_scale, double stop_scale);
  96. void cuGetScaleSizes(int* min_width, int* max_width,
  97.      int* min_height, int* max_height);
  98. /** Scan a gray-level image,
  99.  *  returns the resulting matches in the ScanMatchVector
  100.  */
  101. void cuScan(const IplImage* pImage, CuScanMatchVector& matches);
  102. /** *pLeft is set to -1 of no scanner was active
  103.  */
  104. void cuGetScannedArea(int* pLeft, int* pTop, int* pRight, int* pBottom);
  105. /** verbosity: 0 minimal, 3 maximal
  106. */
  107. void cuGetVersion(string& version, int verbosity);
  108. #ifdef __cplusplus
  109. }
  110. #endif
  111. #endif // !defined(__CUBICLES_H__INCLUDED__)