root/lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp/CvMat.h @ 22452

Revision 22452, 11.3 kB (checked in by schima, 5 years ago)

キャリブレーション関係の関数を大体実装。

Line 
1/**
2 * (C) 2008 Schima
3 * This code is licenced under the LGPL.
4 */
5
6#pragma once
7
8#include "ICvArr.h"
9#include "CvPoint.h"
10#include "CvPoint2D32f.h"
11#include "CvPoint2D64f.h"
12#include "CvPoint3D32f.h"
13#include "CvPoint3D64f.h"
14#include "MatrixType.h"
15
16typedef CvMat __CvMat;
17
18using namespace System;
19using namespace System::Runtime::InteropServices;
20namespace N = KwsmLab::OpenCvSharp;
21
22namespace KwsmLab {
23namespace OpenCvSharp
24{
25        /// <summary>
26        /// ���d�s��/// </summary>
27        public ref class CvMat : public CvArr, public ICvArr<CvMat^>
28        {
29        internal:               
30                /// <summary>
31                /// �s��b�_�ւ̃|�C���^ [ (__CvMat*)Ptr ]
32                /// </summary>
33                property __CvMat* MatPtr{
34                        __CvMat* get(void){ return (__CvMat*)this->Ptr; }
35                }               
36                CvMat( void );
37                CvMat( Boolean isEnabledDispose );
38                CvMat( __CvMat* ptr );
39                CvMat( __CvMat* ptr, Boolean isEnabledDispose );
40                virtual void Release( void ) override;
41
42        public:         
43                CvMat( Int32 rows, Int32 cols, MatrixType type );
44                CvMat( Int32 rows, Int32 cols, MatrixType type, array<Byte>^ data );
45                CvMat( Int32 rows, Int32 cols, MatrixType type, array<SByte>^ data );
46                CvMat( Int32 rows, Int32 cols, MatrixType type, array<Int16>^ data );
47                CvMat( Int32 rows, Int32 cols, MatrixType type, array<UInt16>^ data );
48                CvMat( Int32 rows, Int32 cols, MatrixType type, array<Int32>^ data );
49                CvMat( Int32 rows, Int32 cols, MatrixType type, array<Single>^ data );
50                CvMat( Int32 rows, Int32 cols, MatrixType type, array<Double>^ data );         
51                CvMat( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint>^ data );
52                CvMat( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint2D32f>^ data );
53                CvMat( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint2D64f>^ data );
54                CvMat( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint3D32f>^ data );
55                CvMat( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint3D64f>^ data );
56                CvMat( Int32 rows, Int32 cols, MatrixType type, IntPtr data );
57
58                #pragma region �v���p�e�B
59                /// <summary>
60                /// ���f�[�^�|�C���^�̃o�C�g�T�C�Y�A
61                /// ���Ȃ킿 sizeof(CvMat) �������
62                /// </summary>
63                static property Int32 SizeOf{
64                        Int32 get(void){ return sizeof(__CvMat); }
65                }
66                /// <summary>
67                /// CvMat �V�O�l�`�� (CV_MAT_MAGIC_VAL)�D�v�f�̌^�ƃt���O
68                /// </summary>
69                virtual property Int32 Type{
70                        Int32 get(void) { return MatPtr->type; }
71                }
72                /// <summary>
73                /// �S�s�̃o�C�g��
74                /// </summary>
75                property Int32 Step{
76                        Int32 get(void) { return MatPtr->step; }
77                }               
78
79                /// <summary>
80                /// �s��[�^�ւ̃|�C���^.
81                /// ��ۂɊi�[���Ă����[�^�^�ɉ����ēK�Xbyte*��uble*���ɃL���X�g���ė��p����
82                /// </summary>
83                property IntPtr Data{
84                        IntPtr get(void) { return (IntPtr)(MatPtr->data.ptr); }
85                }
86                /// <summary>
87                /// �s��[�^�ւ�yte�^�|�C���^.
88                /// </summary>
89                property Byte* DataByte{
90                        Byte* get(void) { return MatPtr->data.ptr; }
91                }
92                /// <summary>
93                /// �s��[�^�ւ�nt16(short)�^�|�C���^.
94                /// </summary>
95                property Int16* DataInt16{
96                        Int16* get(void) { return MatPtr->data.s; }
97                }
98                /// <summary>
99                /// �s��[�^�ւ�nt32(int)�^�|�C���^.
100                /// </summary>
101                property Int32* DataInt32{
102                        Int32* get(void) { return MatPtr->data.i; }
103                }
104                /// <summary>
105                /// �s��[�^�ւ�ingle(float)�^�|�C���^.
106                /// </summary>
107                property Single* DataSingle{
108                        Single* get(void) { return MatPtr->data.fl; }
109                }
110                /// <summary>
111                /// �s��[�^�ւ�ouble�^�|�C���^.
112                /// </summary>
113                property Double* DataDouble{
114                        Double* get(void) { return MatPtr->data.db; }
115                }
116               
117                /// <summary>
118                /// �s���
119                /// </summary>
120                property Int32 Cols{
121                        Int32 get(void) { return MatPtr->cols; }
122                }
123                /// <summary>
124                /// �s���
125                /// </summary>
126                property Int32 Height{
127                        Int32 get(void) { return MatPtr->height; }
128                }
129                /// <summary>
130                /// �s��s��
131                /// </summary>
132                property Int32 Rows{
133                        Int32 get(void) { return MatPtr->rows; }
134                }
135                /// <summary>
136                /// �s��s��
137                /// </summary>
138                property Int32 Width{
139                        Int32 get(void) { return MatPtr->width; }
140                }
141                /// <summary>
142                /// ����z��f��� (cvmGet, cvmSet����).
143                /// </summary>
144                /// <param name="row">�v�f�C���f�b�N�X�́C0����Ƃ���������D</param>
145                /// <param name="col">�v�f�C���f�b�N�X�́C0����Ƃ���������D</param>
146                /// <param name="value">���蓖�Ă�</param>
147                virtual property Double default[Int32, Int32]{
148                        Double get(Int32 row, Int32 col) new{
149                                return MGet(row, col);
150                        }
151                        void set(Int32 row, Int32 col, Double value){
152                                MSet(row, col, value);
153                        }
154                }
155                #pragma endregion
156
157                #pragma region ���Z�q
158                static CvMat^ operator+( CvMat^ a );
159                static CvMat^ operator-( CvMat^ a );
160                static CvMat^ operator~( CvMat^ a );
161                static CvMat^ operator+( CvMat^ a, CvMat^ b );
162                static CvMat^ operator+( CvMat^ a, N::CvScalar b );
163                static CvMat^ operator-( CvMat^ a, CvMat^ b );
164                static CvMat^ operator-( CvMat^ a, N::CvScalar b );
165                static CvMat^ operator*( CvMat^ a, CvMat^ b );
166                static CvMat^ operator*( CvMat^ a, Double b );
167                static CvMat^ operator/( CvMat^ a, Double b );
168                static CvMat^ operator&( CvMat^ a, CvMat^ b );
169                static CvMat^ operator&( CvMat^ a, N::CvScalar b );
170                static CvMat^ operator|( CvMat^ a, CvMat^ b );
171                static CvMat^ operator|( CvMat^ a, N::CvScalar b );
172                static CvMat^ operator^( CvMat^ a, CvMat^ b );
173                static CvMat^ operator^( CvMat^ a, N::CvScalar b );
174                #pragma endregion
175
176                #pragma region static���\�b�h
177                static CvMat^ AffineTransform( array<N::CvPoint2D32f>^ src, array<N::CvPoint2D32f>^ dst );
178                static CvMat^ PerspectiveTransform( array<N::CvPoint2D32f>^ src, array<N::CvPoint2D32f>^ dst );
179                static CvMat^ Identity( Int32 rows, Int32 cols, MatrixType type );
180                static CvMat^ Identity( Int32 rows, Int32 cols, MatrixType type, N::CvScalar value );
181                #pragma endregion
182
183                #pragma region ICvArr���\�b�h
184                virtual CvMat^ Add(CvMat^ src, CvMat^ mask);
185                virtual void Add(CvMat^ src, CvMat^ dst, CvMat^ mask);
186                virtual CvMat^ Add(N::CvScalar value, CvMat^ mask);
187                virtual void Add(N::CvScalar value, CvMat^ dst, CvMat^ mask);
188                virtual CvMat^ And(CvMat^ src, CvMat^ mask);
189                virtual void And(CvMat^ src, CvMat^ dst, CvMat^ mask);
190                virtual CvMat^ And(N::CvScalar value, CvMat^ mask);
191                virtual void And(N::CvScalar value, CvMat^ dst, CvMat^ mask);           
192                virtual void Canny( CvMat^ edges, Double threshold1, Double threshold2 );
193                virtual void Canny( CvMat^ edges, Double threshold1, Double threshold2, ApertureSize aperture_size );
194                virtual CvMat^ Clone(void);
195                virtual void Convert( CvMat^ dst );
196                virtual void ConvertScale( CvMat^ dst );
197                virtual void ConvertScale( CvMat^ dst, Double scale );
198                virtual void ConvertScale( CvMat^ dst, Double scale, Double shift );
199                virtual void ConvertScaleAbs( CvMat^ dst );
200                virtual void ConvertScaleAbs( CvMat^ dst, Double scale );
201                virtual void ConvertScaleAbs( CvMat^ dst, Double scale, Double shift );
202                virtual void Copy(CvMat^ dst);
203                virtual void Copy(CvMat^ dst, N::CvMat^ mask);
204                virtual void CvtColor( CvMat^ dst, ColorConversion code );
205                virtual void Laplace( CvMat^ dst );
206                virtual void Laplace( CvMat^ dst, ApertureSize aperture_size );
207                virtual void Scale( CvMat^ dst );
208                virtual void Scale( CvMat^ dst, Double scale );
209                virtual void Scale( CvMat^ dst, Double scale, Double shift );
210                virtual void Smooth( CvMat^ dst );     
211                virtual void Smooth( CvMat^ dst, SmoothType smoothtype );
212                virtual void Smooth( CvMat^ dst, SmoothType smoothtype, Int32 param1 );
213                virtual void Smooth( CvMat^ dst, SmoothType smoothtype, Int32 param1, Int32 param2 );
214                virtual void Smooth( CvMat^ dst, SmoothType smoothtype, Int32 param1, Int32 param2, Double param3 );
215                virtual void Smooth( CvMat^ dst, SmoothType smoothtype, Int32 param1, Int32 param2, Double param3, Double param4 );
216                virtual void Sobel( CvMat^ dst, Int32 xorder, Int32 yorder );
217                virtual void Sobel( CvMat^ dst, Int32 xorder, Int32 yorder, ApertureSize aperture_size );               
218                virtual void Split( CvMat^ dst0, CvMat^ dst1, CvMat^ dst2, CvMat^ dst3 );               
219                virtual array<CvMat^>^ Split( void );
220                virtual CvMat^ Sub( CvMat^ src, CvMat^ mask );
221                virtual void Sub( CvMat^ src, CvMat^ dst, CvMat^ mask );
222                virtual CvMat^ Sub( N::CvScalar value, CvMat^ mask );
223                virtual void Sub( N::CvScalar value, CvMat^ dst, CvMat^ mask );         
224                virtual CvMat^ SubRS( N::CvScalar value, CvMat^ mask );
225                virtual void SubRS( N::CvScalar value, CvMat^ dst, CvMat^ mask );       
226                virtual void Threshold( CvMat^ dst, Double threshold, Double max_value, N::Threshold threshold_type );
227                #pragma endregion
228
229                #pragma region CvMat�Ǝ����\�b�h         
230                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type );
231                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<Byte>^ data );
232                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<SByte>^ data );
233                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<Int16>^ data );
234                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<UInt16>^ data );
235                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<Int32>^ data );
236                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<Single>^ data );
237                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<Double>^ data );
238                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint>^ data );
239                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint2D32f>^ data );
240                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint2D64f>^ data );
241                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint3D32f>^ data );
242                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint3D64f>^ data );
243                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, IntPtr data );
244                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<Byte>^ data, Int32 step );
245                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<SByte>^ data, Int32 step );
246                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<Int16>^ data, Int32 step );
247                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<UInt16>^ data, Int32 step );
248                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<Int32>^ data, Int32 step );
249                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<Single>^ data, Int32 step );
250                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<Double>^ data, Int32 step );
251                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint>^ data, Int32 step  );
252                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint2D32f>^ data, Int32 step  );
253                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint2D64f>^ data, Int32 step  );
254                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint3D32f>^ data, Int32 step  );
255                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, array<N::CvPoint3D64f>^ data, Int32 step  );
256                N::CvMat^ InitHeader( Int32 rows, Int32 cols, MatrixType type, IntPtr data, Int32 step  );
257                Double MGet( Int32 row, Int32 col );
258                void MSet( Int32 row, Int32 col, Double value );
259                Int32 Rodrigues2( N::CvMat^ dst );
260                Int32 Rodrigues2( N::CvMat^ dst, N::CvMat^ jacobian );
261                #pragma endregion
262
263                virtual String^ ToString( void ) override;
264        };
265
266}
267}
Note: See TracBrowser for help on using the browser.