/// <summary> /// チェーンリーダを初期化する /// </summary> /// <param name="target">チェーンへのポインタ</param> #else /// <summary> /// Initializes chain reader /// </summary> /// <param name="target">Pointer to chain</param> #endif public void StartReadChainPoints(CvChain target) { if (target == null) { throw new ArgumentNullException("target"); } chain = target; NativeMethods.cvStartReadChainPoints(chain.CvPtr, CvPtr); }
/// <summary> /// フリーマンチェーン(Freeman chain)をポリラインで近似する /// </summary> /// <param name="srcSeq">他のチェーンから参照可能なチェーンへの参照.</param> /// <param name="storage">計算結果保存用のストレージ.</param> /// <param name="method">推定手法.</param> /// <param name="parameter">メソッドパラメータ(現在は使われていない).</param> /// <param name="minimalPerimeter">minimal_perimeter以上の周囲長をもつ輪郭のみを計算する.その他のチェーンは結果の構造体から削除される.</param> /// <param name="recursive">trueの場合,src_seqからh_nextあるいはv_nextによって辿ることができる全てのチェーンを近似する.falseの場合,単一のチェーンを近似する. </param> /// <returns></returns> #else /// <summary> /// Approximates Freeman chain(s) with polygonal curve /// </summary> /// <param name="srcSeq">Freeman chain(s) </param> /// <param name="storage">Storage location for the resulting polylines. </param> /// <param name="method">Approximation method.</param> /// <param name="parameter">Method parameter (not used now). </param> /// <param name="minimalPerimeter">Approximates only those contours whose perimeters are not less than minimal_perimeter. Other chains are removed from the resulting structure. </param> /// <param name="recursive">If true, the function approximates all chains that access can be obtained to from src_seq by h_next or v_next links. If false, the single chain is approximated. </param> /// <returns></returns> #endif public static CvSeq <CvPoint> ApproxChains(CvChain srcSeq, CvMemStorage storage, ContourChain method, double parameter, int minimalPerimeter, bool recursive) { if (srcSeq == null) { throw new ArgumentNullException("srcSeq"); } if (storage == null) { throw new ArgumentNullException("storage"); } IntPtr resultPtr = NativeMethods.cvApproxChains(srcSeq.CvPtr, storage.CvPtr, method, parameter, minimalPerimeter, recursive); if (resultPtr == IntPtr.Zero) { return(null); } CvSeq <CvPoint> result = new CvSeq <CvPoint>(resultPtr); return(result); }
/// <summary> /// フリーマンチェーン(Freeman chain)をポリラインで近似する /// </summary> /// <param name="srcSeq">他のチェーンから参照可能なチェーンへの参照.</param> /// <param name="storage">計算結果保存用のストレージ.</param> /// <param name="method">推定手法.</param> /// <param name="parameter">メソッドパラメータ(現在は使われていない).</param> /// <param name="minimalPerimeter">minimal_perimeter以上の周囲長をもつ輪郭のみを計算する.その他のチェーンは結果の構造体から削除される.</param> /// <returns></returns> #else /// <summary> /// Approximates Freeman chain(s) with polygonal curve /// </summary> /// <param name="srcSeq">Freeman chain(s) </param> /// <param name="storage">Storage location for the resulting polylines. </param> /// <param name="method">Approximation method.</param> /// <param name="parameter">Method parameter (not used now). </param> /// <param name="minimalPerimeter">Approximates only those contours whose perimeters are not less than minimal_perimeter. Other chains are removed from the resulting structure. </param> /// <returns></returns> #endif public static CvSeq <CvPoint> ApproxChains(CvChain srcSeq, CvMemStorage storage, ContourChain method, double parameter, int minimalPerimeter) { return(ApproxChains(srcSeq, storage, method, parameter, minimalPerimeter, false)); }
/// <summary> /// フリーマンチェーン(Freeman chain)をポリラインで近似する /// </summary> /// <param name="srcSeq">他のチェーンから参照可能なチェーンへの参照.</param> /// <param name="storage">計算結果保存用のストレージ.</param> /// <param name="method">推定手法.</param> /// <returns></returns> #else /// <summary> /// Approximates Freeman chain(s) with polygonal curve /// </summary> /// <param name="srcSeq">Freeman chain(s) </param> /// <param name="storage">Storage location for the resulting polylines. </param> /// <param name="method">Approximation method.</param> /// /// <returns></returns> #endif public static CvSeq <CvPoint> ApproxChains(CvChain srcSeq, CvMemStorage storage, ContourChain method) { return(ApproxChains(srcSeq, storage, method, 0, 0, false)); }
/// <summary> /// フリーマンチェーン(Freeman chain)をポリラインで近似する /// </summary> /// <param name="srcSeq">他のチェーンから参照可能なチェーンへの参照.</param> /// <param name="storage">計算結果保存用のストレージ.</param> /// <returns></returns> #else /// <summary> /// Approximates Freeman chain(s) with polygonal curve /// </summary> /// <param name="srcSeq">Freeman chain(s) </param> /// <param name="storage">Storage location for the resulting polylines. </param> /// <returns></returns> #endif public static CvSeq <CvPoint> ApproxChains(CvChain srcSeq, CvMemStorage storage) { return(ApproxChains(srcSeq, storage, ContourChain.ApproxSimple, 0, 0, false)); }
/// <summary> /// cvStartReadChainPointsで初期化 /// </summary> /// <param name="chain">チェーンへのポインタ</param> #else /// <summary> /// Initialize by cvStartReadChainPoints /// </summary> /// <param name="chain">Pointer to chain</param> #endif public CvChainPtReader(CvChain chain) : this() { this.chain = chain; Cv.StartReadChainPoints(chain, this); }
/// <summary> /// デフォルトコンストラクタ /// </summary> #else /// <summary> /// Default constructor /// </summary> #endif public CvChainPtReader() { ptr = AllocMemory(SizeOf); chain = null; }