Changeset 32668 for lang/cpluspluscli

Show
Ignore:
Timestamp:
04/21/09 00:17:07 (4 years ago)
Author:
schima
Message:

CvHaarFeature?, CvHaarClassifier?, CvHaarStageClassifier?, CvHaarClassifierCascade?

Location:
lang/cpluspluscli/OpenCvSharp2/trunk
Files:
9 added
7 modified

Legend:

Unmodified
Added
Removed
  • lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp.Extern/CvConst.h

    r32539 r32668  
    342342                                literal Int32 CV_HAAR_FIND_BIGGEST_OBJECT_ = CV_HAAR_FIND_BIGGEST_OBJECT; 
    343343                                literal Int32 CV_HAAR_DO_ROUGH_SEARCH_ = CV_HAAR_DO_ROUGH_SEARCH; 
     344                                // CvHaarFeature 
     345                                literal Int32 CV_HAAR_FEATURE_MAX_ = CV_HAAR_FEATURE_MAX; 
    344346                                // CvHistogram 
    345347                                literal Int32 CV_HIST_ARRAY_ = CV_HIST_ARRAY; 
  • lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp.Extern/OpenCvSharp.Extern.vcproj

    r32582 r32668  
    511511                                </File> 
    512512                                <File 
     513                                        RelativePath=".\WCvHaarClassifier.cpp" 
     514                                        > 
     515                                </File> 
     516                                <File 
    513517                                        RelativePath=".\WCvHaarClassifierCascade.cpp" 
     518                                        > 
     519                                </File> 
     520                                <File 
     521                                        RelativePath=".\WCvHaarFeature.cpp" 
     522                                        > 
     523                                </File> 
     524                                <File 
     525                                        RelativePath=".\WCvHaarStageClassifier.cpp" 
    514526                                        > 
    515527                                </File> 
     
    633645                                > 
    634646                        </File> 
     647                        <File 
     648                                RelativePath=".\WCvHaarFeature.h" 
     649                                > 
     650                        </File> 
    635651                        <Filter 
    636652                                Name="Class" 
     
    669685                                </File> 
    670686                                <File 
     687                                        RelativePath=".\WCvHaarClassifier.h" 
     688                                        > 
     689                                </File> 
     690                                <File 
    671691                                        RelativePath=".\WCvHaarClassifierCascade.h" 
     692                                        > 
     693                                </File> 
     694                                <File 
     695                                        RelativePath=".\WCvHaarStageClassifier.h" 
    672696                                        > 
    673697                                </File> 
  • lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp.Extern/WCvHaarClassifierCascade.h

    r32637 r32668  
    4646                { 
    4747                        int get(){ return _ptr->flags; } 
    48                 }; 
     48                } 
    4949                property int count 
    5050                { 
     
    6767                        IntPtr get(){ return IntPtr(_ptr->stage_classifier); } 
    6868                } 
     69                IntPtr stage_classifier_at(int index) 
     70                { 
     71                        return IntPtr(&(_ptr->stage_classifier[index]));  
     72                } 
    6973                property IntPtr hid_cascade 
    7074                { 
  • lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp.Test/Program.cs

    r32628 r32668  
    5555        static void Main() 
    5656        { 
     57            CvRect rect = new CvRect(10, 20, 30, 40); 
     58            IntPtr ptr = Marshal.AllocHGlobal(CvRect.SizeOf); 
     59            Marshal.StructureToPtr(rect, ptr, false); 
     60            int widthOffset = Marshal.OffsetOf(typeof(CvRect), "Width").ToInt32(); 
     61 
     62            Stopwatch watch = new Stopwatch(); 
     63 
     64            watch.Start(); 
     65            for (int i = 0; i < 10000; i++) 
     66            { 
     67                int width = rect.Width; 
     68            } 
     69            watch.Stop(); 
     70            Console.WriteLine(watch.ElapsedTicks); 
     71            watch.Reset(); 
     72            watch.Start(); 
     73            for (int i = 0; i < 10000; i++) 
     74            { 
     75                int width = Marshal.ReadInt32(ptr, widthOffset); 
     76            } 
     77            watch.Stop(); 
     78            Console.WriteLine(watch.ElapsedTicks); 
     79            watch.Reset(); 
     80            watch.Start(); 
     81            for (int i = 0; i < 10000; i++) 
     82            { 
     83                int width = ((CvRect)Marshal.PtrToStructure(ptr, typeof(CvRect))).Width; 
     84            } 
     85            watch.Stop(); 
     86            Console.WriteLine(watch.ElapsedTicks); 
     87            Console.Read(); 
     88 
    5789            //new Test.Affine();                      // 画像のアフィン変換   
    5890 
  • lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp.Test/Samples/SURF.cs

    r32568 r32668  
    4646                watch.Stop(); 
    4747                Console.WriteLine("Extraction time = {0}ms", watch.ElapsedMilliseconds); 
     48                watch.Reset(); 
     49                watch.Start(); 
    4850 
    4951                // シーン画像にある局所画像の領域を線で囲む 
     
    7981                    Cv.Circle(objColor, center, radius, CvColor.Red, 1, LineType.AntiAlias, 0); 
    8082                } 
     83                watch.Stop(); 
     84                Console.WriteLine("Drawing time = {0}ms", watch.ElapsedMilliseconds); 
    8185 
    8286                // ウィンドウに表示 
  • lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp/OpenCvSharp.csproj

    r32657 r32668  
    44    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    55    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 
    6     <ProductVersion>9.0.21022</ProductVersion> 
     6    <ProductVersion>9.0.30729</ProductVersion> 
    77    <SchemaVersion>2.0</SchemaVersion> 
    88    <ProjectGuid>{4C2356B8-1A1E-4F92-A51C-A49CA116867F}</ProjectGuid> 
     
    146146    <Compile Include="Src\Class\CvGraphScanner.cs" /> 
    147147    <Compile Include="Src\Class\CvGraphVtx.cs" /> 
     148    <Compile Include="Src\Class\CvHaarClassifier.cs" /> 
     149    <Compile Include="Src\Class\CvHaarFeature.cs" /> 
     150    <Compile Include="Src\Class\CvHaarStageClassifier.cs" /> 
    148151    <Compile Include="Src\Class\CvHuMoments.cs" /> 
    149152    <Compile Include="Src\Class\CvLineIterator.cs" /> 
  • lang/cpluspluscli/OpenCvSharp2/trunk/OpenCvSharp/Src/Class/CvHaarClassifierCascade.cs

    r32510 r32668  
    66namespace KwsmLab.OpenCvSharp 
    77{ 
     8#if LANG_JP 
    89    /// <summary> 
    910    /// 段階分類器のカスケードまたは木 
    1011    /// </summary> 
     12#else 
     13    /// <summary> 
     14    /// Cascade or tree of stage classifiers 
     15    /// </summary> 
     16#endif 
    1117    public class CvHaarClassifierCascade : DisposableObject, ICvPtrHolder 
    1218    { 
    1319        /// <summary> 
    14         /// C++/CLI側でポインタにアクセスするオブジェクト 
    15         /// </summary> 
    16         private Extern.WCvHaarClassifierCascade data; 
    17         /// <summary> 
    18         /// データポインタ 
    19         /// </summary> 
    20         private IntPtr ptr; 
    21  
    22  
    23         #region 初期化と解放 
     20        /// C++/CLI wrapper of data pointer 
     21        /// </summary> 
     22        private Extern.WCvHaarClassifierCascade _data; 
     23        /// <summary> 
     24        /// Data pointer 
     25        /// </summary> 
     26        private IntPtr _ptr; 
     27 
     28 
     29        #region Init and Disposal 
     30#if LANG_JP 
    2431        /// <summary> 
    2532        /// ポインタで初期化 
    2633        /// </summary> 
    2734        /// <param name="ptr">struct CvHaarClassifierCascade*</param> 
     35#else 
     36        /// <summary> 
     37        /// Initializes from native pointer 
     38        /// </summary> 
     39        /// <param name="ptr"></param> 
     40#endif 
    2841        public CvHaarClassifierCascade(IntPtr ptr) 
    2942            : this(ptr, true) 
     
    3548        /// <param name="ptr">struct CvHaarClassifierCascade*</param> 
    3649        /// <param name="isEnabledDispose">自動的にGCで解放してよいかどうか</param> 
    37         public CvHaarClassifierCascade(IntPtr ptr, bool isEnabledDispose) 
     50        internal CvHaarClassifierCascade(IntPtr ptr, bool isEnabledDispose) 
    3851            : base(isEnabledDispose) 
    3952        { 
     
    4255                throw new OpenCvSharpException("CvHaarClassifierCascadeの生成に失敗しました。"); 
    4356            } 
    44             this.ptr = ptr; 
    45             this.data = new Extern.WCvHaarClassifierCascade(ptr); 
    46         } 
    47          
     57            this._ptr = ptr; 
     58            this._data = new Extern.WCvHaarClassifierCascade(ptr); 
     59        } 
     60#if LANG_JP 
    4861            /// <summary> 
    4962            /// ファイルからHaar分類機のカスケードを読み込んで返す (cvLoad相当). 
     
    5164            /// <param name="filename">読み込むファイル(xml/yaml)</param> 
    5265            /// <returns>CvHaarClassifierCascade</returns> 
     66#else 
     67        /// <summary> 
     68        /// Loads object from file 
     69        /// </summary> 
     70        /// <param name="filename">File name (xml/yaml)</param> 
     71        /// <returns></returns> 
     72#endif 
    5373            public static CvHaarClassifierCascade FromFile( string filename ) 
    5474            { 
     
    6080            } 
    6181 
    62         /// <summary> 
    63         /// リソースの解放 
    64         /// </summary> 
     82#if LANG_JP 
     83        /// <summary> 
     84        /// リソースの解放 (cvReleaseHaarClassifierCascade) 
     85        /// </summary> 
     86#else 
     87        /// <summary> 
     88        /// Releases using cvReleaseHaarClassifierCascade 
     89        /// </summary> 
     90#endif 
    6591        public override void Dispose() 
    6692        { 
    6793            if (IsEnabledDispose && !IsDisposed) 
    6894            { 
    69                 CvDll.cvReleaseHaarClassifierCascade(ref ptr);                 
     95                CvDll.cvReleaseHaarClassifierCascade(ref _ptr);                 
    7096            } 
    7197            base.Dispose(); 
     
    74100 
    75101 
    76         #region プロパティ 
    77         /// <summary> 
    78         /// データポインタ (CvMemStorage*) 
     102        #region Properties 
     103        /// <summary> 
     104        /// Data pointer (CvHaarClassifierCascade*) 
    79105        /// </summary> 
    80106        public IntPtr CvPtr 
    81107        { 
    82             get { return ptr; } 
    83         } 
    84         /// <summary> 
    85         /// sizeof(WCvMemStorage) を取得する 
    86         /// </summary> 
    87         public const Int32 SizeOf = Extern.WCvMemStorage.SizeOf; 
    88  
    89  
     108            get { return _ptr; } 
     109        } 
     110        /// <summary> 
     111        /// sizeof(CvHaarClassifierCascade)  
     112        /// </summary> 
     113        public const Int32 SizeOf = Extern.WCvHaarClassifierCascade.SizeOf; 
     114 
     115 
     116#if LANG_JP 
    90117        /// <summary> 
    91118        /// シグネチャ 
    92119        /// </summary> 
     120#else 
     121        /// <summary> 
     122        /// Signature  
     123        /// </summary> 
     124#endif 
    93125        public int Flags 
    94126        { 
    95             get { return data.flags; } 
    96         } 
     127            get { return _data.flags; } 
     128        } 
     129#if LANG_JP 
    97130        /// <summary> 
    98131        /// 段階数 
    99132        /// </summary> 
     133#else 
     134        /// <summary> 
     135        /// Number of stages 
     136        /// </summary> 
     137#endif 
    100138        public int Count 
    101139        { 
    102             get { return data.count; } 
    103         } 
     140            get { return _data.count; } 
     141        } 
     142#if LANG_JP 
    104143        /// <summary> 
    105144        /// オリジナルのオブジェクトサイズ(カスケードの学習対象) 
    106145        /// </summary> 
     146#else 
     147        /// <summary> 
     148        /// Original object size (the cascade is trained for) 
     149        /// </summary> 
     150#endif 
    107151        public CvSize OrigWindowSize 
    108152        { 
    109             get { return data.orig_window_size; } 
    110         } 
     153            get { return _data.orig_window_size; } 
     154        } 
     155#if LANG_JP 
    111156        /// <summary> 
    112157        /// 現在のオブジェクトサイズ 
    113158        /// </summary> 
     159#else 
     160        /// <summary> 
     161        /// Current object size 
     162        /// </summary> 
     163#endif 
    114164        public CvSize RealWindowSize 
    115165        { 
    116             get { return data.real_window_size; } 
    117         } 
     166            get { return _data.real_window_size; } 
     167        } 
     168#if LANG_JP 
    118169        /// <summary> 
    119170        /// 現在のスケール 
    120171        /// </summary> 
     172#else 
     173        /// <summary> 
     174        /// Current scale 
     175        /// </summary> 
     176#endif 
    121177        public double Scale 
    122178        { 
    123             get { return data.scale; } 
    124         } 
     179            get { return _data.scale; } 
     180        } 
     181#if LANG_JP 
    125182        /// <summary> 
    126183        /// 段階分類器の配列 
    127184        /// </summary> 
    128         public IntPtr StageClassifier 
     185#else 
     186        /// <summary> 
     187        /// Array of stage classifiers 
     188        /// </summary> 
     189#endif 
     190        public CvHaarStageClassifier[] StageClassifier 
    129191        { 
    130192            get 
    131193            { 
    132                 return data.stage_classifier; 
     194                int length = _data.count; 
     195                CvHaarStageClassifier[] result = new CvHaarStageClassifier[length]; 
     196                for (int i = 0; i < length; i++) 
     197                { 
     198                    result[i] = new CvHaarStageClassifier(_data.stage_classifier_at(i)); 
     199                } 
     200                return result; 
    133201            } 
    134202        } 
     203#if LANG_JP 
    135204        /// <summary> 
    136205        /// cvSetImagesForHaarClassifierCascade によって生成されるカスケードの,隠れ最適表現 
    137206        /// </summary> 
     207#else 
     208        /// <summary> 
     209        /// Hidden optimized representation of the cascade, created by cvSetImagesForHaarClassifierCascade 
     210        /// </summary> 
     211#endif 
    138212        public IntPtr HidCascade 
    139213        { 
    140             get { return data.hid_cascade; } 
     214            get { return _data.hid_cascade; } 
    141215        } 
    142216