/src/OpenCvSharp/Src/Struct/CvTermCriteria.cs

https://github.com/MrBadge/opencvsharp · C# · 161 lines · 73 code · 6 blank · 82 comment · 0 complexity · 2e79e70e3272a3b6af3f17e686504d32 MD5 · raw file

  1. /*
  2. * (C) 2008-2014 shimat
  3. * This code is licenced under the LGPL.
  4. */
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Runtime.InteropServices;
  8. using System.Text;
  9. namespace OpenCvSharp
  10. {
  11. #if LANG_JP
  12. /// <summary>
  13. /// 反復アルゴリズムのための終了条件
  14. /// </summary>
  15. #else
  16. /// <summary>
  17. /// Termination criteria for iterative algorithms
  18. /// </summary>
  19. #endif
  20. [StructLayout(LayoutKind.Sequential)]
  21. [Serializable]
  22. public struct CvTermCriteria
  23. {
  24. #region Fields
  25. #if LANG_JP
  26. /// <summary>
  27. /// 終了条件の種類
  28. /// </summary>
  29. #else
  30. /// <summary>
  31. /// A combination of CriteriaType flags
  32. /// </summary>
  33. #endif
  34. public CriteriaType Type;
  35. #if LANG_JP
  36. /// <summary>
  37. /// 反復回数
  38. /// </summary>
  39. #else
  40. /// <summary>
  41. /// Maximum number of iterations
  42. /// </summary>
  43. #endif
  44. public int MaxIter;
  45. #if LANG_JP
  46. /// <summary>
  47. /// 目標精度
  48. /// </summary>
  49. #else
  50. /// <summary>
  51. /// Accuracy to achieve
  52. /// </summary>
  53. #endif
  54. public double Epsilon;
  55. /// <summary>
  56. /// sizeof(CvTermCriteria)
  57. /// </summary>
  58. public const int SizeOf = sizeof(int) + sizeof(int) + sizeof(double);
  59. #endregion
  60. #region Constructors
  61. #if LANG_JP
  62. /// <summary>
  63. /// 反復回数による終了条件を設定して初期化
  64. /// </summary>
  65. /// <param name="max_iter">反復数の最大値</param>
  66. #else
  67. /// <summary>
  68. /// Constructor
  69. /// </summary>
  70. /// <param name="max_iter">maximum number of iterations</param>
  71. #endif
  72. public CvTermCriteria(int max_iter)
  73. : this(CriteriaType.Iteration, max_iter, 0)
  74. {
  75. }
  76. #if LANG_JP
  77. /// <summary>
  78. /// 目標精度による終了条件を設定して初期化
  79. /// </summary>
  80. /// <param name="epsilon">目標精度</param>
  81. #else
  82. /// <summary>
  83. /// Constructor
  84. /// </summary>
  85. /// <param name="epsilon">accuracy to achieve</param>
  86. #endif
  87. public CvTermCriteria(double epsilon)
  88. : this(CriteriaType.Epsilon, 0, epsilon)
  89. {
  90. }
  91. #if LANG_JP
  92. /// <summary>
  93. /// 繰り返し回数と目標精度による終了条件を設定して初期化
  94. /// </summary>yy
  95. /// <param name="max_iter">反復数の最大値</param>
  96. /// <param name="epsilon">目標精度</param>
  97. #else
  98. /// <summary>
  99. /// Constructor
  100. /// </summary>
  101. /// <param name="max_iter">maximum number of iterations</param>
  102. /// <param name="epsilon">accuracy to achieve</param>
  103. #endif
  104. public CvTermCriteria(int max_iter, double epsilon)
  105. : this(CriteriaType.Epsilon | CriteriaType.Iteration, max_iter, epsilon)
  106. {
  107. }
  108. #if LANG_JP
  109. /// <summary>
  110. /// すべて指定して初期化
  111. /// </summary>
  112. /// <param name="type">終了条件</param>
  113. /// <param name="max_iter">反復数の最大値</param>
  114. /// <param name="epsilon">目標精度</param>
  115. #else
  116. /// <summary>
  117. /// Constructor
  118. /// </summary>
  119. /// <param name="type">a combination of CriteriaType flags</param>
  120. /// <param name="max_iter">maximum number of iterations</param>
  121. /// <param name="epsilon">accuracy to achieve</param>
  122. #endif
  123. public CvTermCriteria(CriteriaType type, int max_iter, double epsilon)
  124. {
  125. this.Type = type;
  126. this.MaxIter = max_iter;
  127. this.Epsilon = epsilon;
  128. }
  129. #endregion
  130. #region Methods
  131. #region Check
  132. #if LANG_JP
  133. /// <summary>
  134. /// 終了条件をチェックし,type= Iteration|Epsilon に設定し,反復数の max_iterとeprilon の両方が有効になるように変換する
  135. /// </summary>
  136. /// <param name="default_eps"></param>
  137. /// <param name="default_max_iters"></param>
  138. /// <returns>変換結果</returns>
  139. #else
  140. /// <summary>
  141. /// Check termination criteria and transform it so that type=CriteriaType.Iteration | CriteriaType.Epsilon,
  142. /// and both max_iter and epsilon are valid
  143. /// </summary>
  144. /// <param name="default_eps">Default epsilon</param>
  145. /// <param name="default_max_iters">Default maximum number of iteration</param>
  146. /// <returns></returns>
  147. #endif
  148. public CvTermCriteria Check(double default_eps, int default_max_iters)
  149. {
  150. return Cv.CheckTermCriteria(this, default_eps, default_max_iters);
  151. }
  152. #endregion
  153. #endregion
  154. }
  155. }