Changeset 31159
- Timestamp:
- 03/14/09 02:09:57 (4 years ago)
- Location:
- lang/cpluspluscli/OpenCvSharp2/trunk
- Files:
-
- 12 modified
-
OpenCvSharp.Core/CvInline.h (modified) (2 diffs)
-
OpenCvSharp.Core/WCvQuadEdge2D.h (modified) (1 diff)
-
OpenCvSharp.Core/WCvSeqReader.h (modified) (6 diffs)
-
OpenCvSharp.Test/Program.cs (modified) (1 diff)
-
OpenCvSharp.Test/Samples/Delaunay.cs (modified) (4 diffs)
-
OpenCvSharp/Class/CvQuadEdge2D.cs (modified) (3 diffs)
-
OpenCvSharp/Class/CvSeqReader.cs (modified) (2 diffs)
-
OpenCvSharp/Cv.cs (modified) (10 diffs)
-
OpenCvSharp/CvDll.cs (modified) (1 diff)
-
OpenCvSharp/Struct/CvPoint.cs (modified) (3 diffs)
-
OpenCvSharp/Struct/CvPoint2D32f.cs (modified) (3 diffs)
-
OpenCvSharp/Struct/CvSubdiv2DEdge.cs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp.Core/CvInline.h
r31149 r31159 24 24 return CV_IS_SET_ELEM( ptr.ToPointer() ); 25 25 } 26 [Obsolete] 26 27 static void CV_NEXT_SEQ_ELEM_( int elem_size, IntPtr reader ) { 27 28 CvSeqReader sr = *((CvSeqReader*)reader.ToPointer()); 28 29 CV_NEXT_SEQ_ELEM(elem_size, sr); 29 30 } 31 [Obsolete] 30 32 static void CV_PREV_SEQ_ELEM_( int elem_size, IntPtr reader ) { 31 33 CvSeqReader sr = *((CvSeqReader*)reader.ToPointer()); … … 64 66 return ::cvSubdiv2DSymEdge(edge); 65 67 } 66 static CvSubdiv2DEdge cvSubdiv2DGetEdge( CvSubdiv2DEdge edge, Int32type ) {68 static CvSubdiv2DEdge cvSubdiv2DGetEdge( CvSubdiv2DEdge edge, int type ) { 67 69 return ::cvSubdiv2DGetEdge(edge, (CvNextEdgeType)type); 68 70 } -
lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp.Core/WCvQuadEdge2D.h
r31136 r31159 31 31 WCvQuadEdge2D(IntPtr ptr) 32 32 { 33 if(ptr == IntPtr::Zero) { 34 //throw gcnew ArgumentNullException("ptr"); 35 } 33 36 this->_ptr = reinterpret_cast<CvQuadEdge2D*>(ptr.ToPointer()); 34 37 this->Ptr = IntPtr(ptr); -
lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp.Core/WCvSeqReader.h
r31149 r31159 6 6 #pragma once 7 7 8 typedef struct CvSeqReader __CvSeqReader;9 10 8 namespace KwsmLab { 11 9 namespace OpenCvSharp { 12 10 namespace Core 13 11 { 12 struct CvSeqReaderHolder 13 { 14 public: 15 CvSeqReader SeqReader; 16 17 CvSeqReaderHolder() 18 { 19 this->SeqReader = CvSeqReader(); 20 } 21 }; 22 14 23 /// <summary> 15 24 /// CvSeq�����[�^��ݎ����߂̃N���X … … 18 27 { 19 28 private: 20 __CvSeqReader* _ptr;29 CvSeqReader* _ptr; 21 30 bool isDisposed; 22 31 … … 34 43 WCvSeqReader() 35 44 { 36 this->_ptr = new __CvSeqReader;37 this->Ptr = IntPtr( ptr);45 this->_ptr = new struct CvSeqReader; 46 this->Ptr = IntPtr(this->_ptr); 38 47 this->isDisposed = false; 39 48 } … … 53 62 { 54 63 if(!isDisposed){ 55 delete ptr;64 delete this->_ptr; 56 65 isDisposed = true; 57 66 } … … 63 72 { 64 73 if(!isDisposed){ 65 delete ptr;74 delete this->_ptr; 66 75 isDisposed = true; 67 76 } … … 69 78 70 79 property int header_size { 71 int get(){ return _ptr->header_size; }80 int get(){ return this->_ptr->header_size; } 72 81 }; 73 82 property IntPtr seq{ 74 IntPtr get(){ return IntPtr( _ptr->seq); }83 IntPtr get(){ return IntPtr(this->_ptr->seq); } 75 84 } 76 85 property IntPtr block{ 77 IntPtr get(){ return IntPtr( _ptr->block); }86 IntPtr get(){ return IntPtr(this->_ptr->block); } 78 87 } 79 88 property IntPtr ptr{ 80 IntPtr get(){ return IntPtr(_ptr->ptr); } 89 IntPtr get(){ return IntPtr(this->_ptr->ptr); } 90 void set(IntPtr value){ _ptr->ptr = (schar*)value.ToPointer(); } 81 91 } 82 92 property IntPtr block_min{ 83 IntPtr get(){ return IntPtr( _ptr->block_min); }93 IntPtr get(){ return IntPtr(this->_ptr->block_min); } 84 94 } 85 95 property IntPtr block_max{ 86 IntPtr get(){ return IntPtr( _ptr->block_max); }96 IntPtr get(){ return IntPtr(this->_ptr->block_max); } 87 97 } 88 98 property int delta_index { 89 int get(){ return _ptr->delta_index; }99 int get(){ return this->_ptr->delta_index; } 90 100 }; 91 101 property IntPtr prev_elem{ 92 IntPtr get(){ return IntPtr( _ptr->prev_elem); }102 IntPtr get(){ return IntPtr(this->_ptr->prev_elem); } 93 103 } 94 104 }; -
lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp.Test/Program.cs
r31149 r31159 44 44 static void Main() 45 45 { 46 /*unsafe 47 { 48 int i = 100; 49 IntPtr ptr1 = new IntPtr(&i); 50 IntPtr ptr2 = new IntPtr(ptr1.ToInt32() + 4); 51 52 i.ToString(); 53 }*/ 54 55 /*using (IplImage image = new IplImage(200, 200, BitDepth.U8, 3)) 56 { 57 CvPoint[] pts = new CvPoint[] { new CvPoint(10, 10), new CvPoint(100, 100), new CvPoint(50, 100) }; 58 image.PolyLine(new CvPoint[][] { pts }, true, CvColor.Red, 1, LineType.AntiAlias, 0); 59 using (CvWindow w = new CvWindow(image)) 60 { 61 Cv.WaitKey(); 62 } 63 } 64 return;*/ 46 65 // 画像のアフィン変換 47 66 //new Test.Affine(); -
lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp.Test/Samples/Delaunay.cs
r31149 r31159 29 29 for (int i = 0; i < 200; i++) 30 30 { 31 CvPoint2D32f fp = new CvPoint2D32f((float)rand.Next(5, rect.Width - 10), (float)rand.Next(5, rect.Height - 10)); 31 CvPoint2D32f fp = new CvPoint2D32f 32 { 33 X = (float)rand.Next(5, rect.Width - 10), 34 Y = (float)rand.Next(5, rect.Height - 10) 35 }; 32 36 locate_point(subdiv, fp, img, active_facet_color); 33 37 window.Image = img; … … 73 77 do 74 78 { 79 //Console.WriteLine(e); 75 80 draw_subdiv_edge(img, e, active_color); 76 e = e.GetEdge(NextEdgeType.NextAroundLeft); 81 e = e.GetEdge(NextEdgeType.NextAroundLeft); 77 82 } 78 83 while (e != e0); … … 130 135 CvPoint idst = new CvPoint(Cv.Round(dst.X), Cv.Round(dst.Y)); 131 136 137 Console.WriteLine("{0} / {1}", iorg, idst); 132 138 img.Line(iorg, idst, color, 1, LineType.AntiAlias, 0); 133 139 } … … 150 156 for (int i = 0; i < total; i++) 151 157 { 152 CvQuadEdge2D edge = CvQuadEdge2D.FromPtr(reader.CvPtr); 158 CvQuadEdge2D edge = CvQuadEdge2D.FromSeqReader(reader); 159 //CvQuadEdge2D edge = CvQuadEdge2D.FromPtr(reader.Ptr); 153 160 154 161 if (Cv.IS_SET_ELEM(edge)) -
lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp/Class/CvQuadEdge2D.cs
r31149 r31159 2 2 using System.Collections.Generic; 3 3 using System.Linq; 4 using System.Runtime.InteropServices; 4 5 using System.Text; 5 6 … … 68 69 throw new ArgumentNullException("reader"); 69 70 } 70 return new CvQuadEdge2D(reader. CvPtr);71 return new CvQuadEdge2D(reader.Ptr); 71 72 } 72 73 … … 85 86 { 86 87 return new CvSubdiv2DEdge((uint)this.CvPtr.ToInt32()); 88 //uint value = (uint)Marshal.ReadInt32(this.CvPtr); 89 //return new CvSubdiv2DEdge(value); 87 90 } 88 91 #endregion -
lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp/Class/CvSeqReader.cs
r31149 r31159 127 127 { 128 128 get { return data.ptr; } 129 internal set { data.ptr = value; } 129 130 } 130 131 /// <summary> … … 216 217 { 217 218 T result; 218 Cv. PREV_READ_SEQ_ELEM<T>(out result, this);219 Cv.REV_READ_SEQ_ELEM<T>(out result, this); 219 220 return result; 220 221 } -
lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp/Cv.cs
r31149 r31159 82 82 } 83 83 #endregion 84 #region _NEXT_SEQ_ELEM84 #region NEXT_SEQ_ELEM 85 85 /// <summary> 86 86 /// 次のシーケンスへ … … 89 89 /// <param name="reader"></param> 90 90 public static void NEXT_SEQ_ELEM(int elem_size, CvSeqReader reader) 91 { 91 { 92 92 if (reader == null) 93 93 { 94 94 throw new ArgumentNullException("reader"); 95 95 } 96 /* 96 97 CvInline.CV_NEXT_SEQ_ELEM_(elem_size, reader.CvPtr); 98 reader.ToString(); 99 //*/ 100 /* 101 #define CV_NEXT_SEQ_ELEM( elem_size, reader ) \ 102 { \ 103 if( ((reader).ptr += (elem_size)) >= (reader).block_max ) \ 104 { \ 105 cvChangeSeqBlock( &(reader), 1 ); \ 106 } \ 107 } 108 */ 109 ///* 110 reader.Ptr = new IntPtr(reader.Ptr.ToInt32() + elem_size); 111 if( reader.Ptr.ToInt32() >= reader.BlockMax.ToInt32() ) 112 { 113 CvDll.cvChangeSeqBlock(reader.CvPtr, 1); 114 } 115 //*/ 97 116 } 98 117 #endregion … … 109 128 throw new ArgumentNullException("reader"); 110 129 } 111 CvInline.CV_PREV_SEQ_ELEM_(elem_size, reader.CvPtr); 130 //CvInline.CV_PREV_SEQ_ELEM_(elem_size, reader.CvPtr); 131 /* 132 #define CV_PREV_SEQ_ELEM( elem_size, reader ) \ 133 { \ 134 if( ((reader).ptr -= (elem_size)) < (reader).block_min ) \ 135 { \ 136 cvChangeSeqBlock( &(reader), -1 ); \ 137 } \ 138 } 139 */ 140 reader.Ptr = new IntPtr(reader.Ptr.ToInt32() - elem_size); 141 if (reader.Ptr.ToInt32() < reader.BlockMin.ToInt32()) 142 { 143 CvDll.cvChangeSeqBlock(reader.CvPtr, -1); 144 } 112 145 } 113 146 #endregion … … 139 172 } 140 173 #endregion 141 #region PREV_READ_SEQ_ELEM174 #region REV_READ_SEQ_ELEM 142 175 /// <summary> 143 176 /// シーケンスの要素を一つ読みだして、読み出しポインタを次へ1つ移動させる … … 145 178 /// <param name="elem"></param> 146 179 /// <param name="reader"></param> 147 public static void PREV_READ_SEQ_ELEM<T>(out T elem, CvSeqReader reader) where T : struct180 public static void REV_READ_SEQ_ELEM<T>(out T elem, CvSeqReader reader) where T : struct 148 181 { 149 182 if (reader == null) … … 558 591 { 559 592 return CvInline.cvSubdiv2DGetEdge(edge, (int)type); 593 594 /* 595 Int64 edge64 = Convert.ToInt64(edge.Value); 596 IntPtr ptr = (IntPtr)(edge64 & -4); 597 CvQuadEdge2D qe = new CvQuadEdge2D(ptr); 598 Int64 edgePtr = qe.Next[(edge64 + (int)type) & 3]; 599 edgePtr = (edgePtr & -4) + ((edgePtr + ((int)type >> 4)) & 3); 600 return new CvSubdiv2DEdge(Convert.ToUInt32(edgePtr)); 601 //*/ 560 602 } 561 603 #endregion … … 574 616 throw new ArgumentNullException("subdiv"); 575 617 } 576 CvSubdiv2DEdge e = 0;618 CvSubdiv2DEdge e; 577 619 IntPtr p = IntPtr.Zero; 578 620 Subdiv2DPointLocation result = CvDll.cvSubdiv2DLocate(subdiv.CvPtr, pt, out e, ref p); … … 594 636 throw new ArgumentNullException("subdiv"); 595 637 } 638 CvSubdiv2DEdge e; 596 639 IntPtr p = vertex.CvPtr; 597 Subdiv2DPointLocation result = CvDll.cvSubdiv2DLocate(subdiv.CvPtr, pt, out edge, ref p); 640 Subdiv2DPointLocation result = CvDll.cvSubdiv2DLocate(subdiv.CvPtr, pt, out e, ref p); 641 edge = e; 598 642 if (p == IntPtr.Zero) 599 643 { … … 1211 1255 } 1212 1256 // メモリ確保 1213 gch[i] = GCHandle.Alloc(pts[i] );1257 gch[i] = GCHandle.Alloc(pts[i], GCHandleType.Pinned); 1214 1258 ptsPtr[i] = gch[i].AddrOfPinnedObject(); 1215 1259 } … … 1813 1857 public static void StartReadSeq(CvSeq seq, CvSeqReader reader) 1814 1858 { 1815 StartReadSeq(seq, reader );1859 StartReadSeq(seq, reader, false); 1816 1860 } 1817 1861 /// <summary> -
lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp/CvDll.cs
r31149 r31159 60 60 61 61 #region CxCore 62 [DllImport(DLL_CXCORE)] 63 public static extern void cvChangeSeqBlock( IntPtr reader, Int32 direction ); 62 64 [DllImport(DLL_CXCORE)] 63 65 public static extern void cvCircle(IntPtr img, CvPoint center, Int32 radius, CvScalar color, Int32 thickness, [MarshalAs(UnmanagedType.U4)] LineType line_type, Int32 shift); -
lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp/Struct/CvPoint.cs
r31077 r31159 39 39 } 40 40 41 /// <summary> 42 /// Equalsのオーバーライド 43 /// </summary> 44 /// <param name="obj"></param> 45 /// <returns></returns> 46 public override bool Equals(object obj) 47 { 48 return base.Equals(obj); 49 } 41 50 42 /// <summary> 51 43 /// 指定したCvPointの座標と等しければtrueを返す … … 79 71 80 72 /// <summary> 73 /// Equalsのオーバーライド 74 /// </summary> 75 /// <param name="obj"></param> 76 /// <returns></returns> 77 public override bool Equals(object obj) 78 { 79 return base.Equals(obj); 80 } 81 /// <summary> 81 82 /// GetHashCodeのオーバーライド 82 83 /// </summary> … … 86 87 return X.GetHashCode() + Y.GetHashCode(); 87 88 } 89 /// <summary> 90 /// 文字列形式を返す 91 /// </summary> 92 /// <returns>文字列形式</returns> 93 public override string ToString() 94 { 95 return string.Format("CvPoint (x:{0} y:{1})", X, Y); 96 } 88 97 } 89 98 } -
lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp/Struct/CvPoint2D32f.cs
r31136 r31159 77 77 } 78 78 79 /// <summary> 80 /// Equalsのオーバーライド 81 /// </summary> 82 /// <param name="obj"></param> 83 /// <returns></returns> 84 public override bool Equals(object obj) 85 { 86 return base.Equals(obj); 87 } 79 88 80 /// <summary> 89 81 /// 指定したCvPoint2D32fの座標と等しければtrueを返す … … 117 109 118 110 /// <summary> 111 /// Equalsのオーバーライド 112 /// </summary> 113 /// <param name="obj"></param> 114 /// <returns></returns> 115 public override bool Equals(object obj) 116 { 117 return base.Equals(obj); 118 } 119 /// <summary> 119 120 /// GetHashCodeのオーバーライド 120 121 /// </summary> … … 124 125 return X.GetHashCode() + Y.GetHashCode(); 125 126 } 127 /// <summary> 128 /// 文字列形式を返す 129 /// </summary> 130 /// <returns>文字列形式</returns> 131 public override string ToString() 132 { 133 return string.Format("CvPoint2D32f (x:{0} y:{1})", X, Y); 134 } 126 135 } 127 136 } -
lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp/Struct/CvSubdiv2DEdge.cs
r31149 r31159 60 60 /// 入力された辺に関連する辺の一つを返す (Subdiv2DGetEdge相当) 61 61 /// </summary> 62 /// <param name="edge">細分割平面の辺の一つ(quad-edge表現ではない)</param>63 62 /// <param name="type">戻り値とする辺の条件</param> 64 63 /// <returns>与えられた辺に関連する辺の一つ</returns> … … 100 99 public CvSubdiv2DEdge RotateEdge( RotateEdgeFlag rotate ) 101 100 { 102 return Cv.Subdiv2DRotateEdge(this .Value, rotate);101 return Cv.Subdiv2DRotateEdge(this, rotate); 103 102 } 104 103 #endregion 105 104 #endregion 105 106 107 public override string ToString() 108 { 109 return string.Format("CvSubdiv2DEdge({0})", Value); 110 } 106 111 } 107 112 }
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)