Changeset 23036

Show
Ignore:
Timestamp:
11/09/08 11:44:26 (5 years ago)
Author:
schima
Message:

cvLUTを普通の配列を指定できるように拡張

Location:
lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp/CV.cpp

    r23009 r23036  
    53805380        #pragma region LUT 
    53815381        /// <summary> 
    5382         /// 出力配列の各要素値をルックアップテーブルを用いて決定する.配列のインデックスは入力配列より求められる.src の各要素に対して以下のような処理を行う. 
    5383         /// dst(I)=lut[src(I)+DELTA] . 
    5384         /// ここで,srcのデプスが CV_8U の場合はDELTA=0,CV_8S の場合は DELTA=128. 
     5382        /// 出力配列の各要素値をルックアップテーブルを用いて決定する. 
    53855383        /// </summary> 
    53865384        /// <param name="src">入力配列(各要素は8ビットデータ).</param> 
     
    53935391                CHECK_NULL(lut); 
    53945392                ::cvLUT(src->Ptr, dst->Ptr, lut->Ptr); 
     5393        } 
     5394        /// <summary> 
     5395        /// 出力配列の各要素値をルックアップテーブルを用いて決定する.ルックアップテーブルが配列で指定できる簡易バージョン. 
     5396        /// </summary> 
     5397        /// <param name="src">入力配列(各要素は8ビットデータ)</param> 
     5398        /// <param name="dst">出力配列(任意のデプス,入力配列と同じチャンネル数)</param> 
     5399        /// <param name="lut">要素数が256であるルックアップテーブル</param> 
     5400        void CV::LUT( N::CvArr^ src, N::CvArr^ dst, array<Byte>^ lut ) 
     5401        { 
     5402                CHECK_NULL(src); 
     5403                CHECK_NULL(dst); 
     5404                CHECK_NULL(lut); 
     5405 
     5406                int type = 1; 
     5407                switch(dst->ElemChannels){ 
     5408                case 1: type = CV_8UC1; break; 
     5409                case 2: type = CV_8UC2; break; 
     5410                case 3: type = CV_8UC3; break; 
     5411                case 4: type = CV_8UC4; break; 
     5412                } 
     5413                ::CvMat* lut_mat = ::cvCreateMat(256, 1, type); 
     5414 
     5415                uchar* lut_ptr = ArrayConverter::ToNativeArray<Byte, uchar>(lut); 
     5416                ::cvSetData( lut_mat, lut_ptr, CV_AUTO_STEP ); 
     5417 
     5418                ::cvLUT(src->Ptr, dst->Ptr, lut_mat); 
     5419 
     5420                ::cvReleaseMat(&lut_mat); 
     5421                delete[] lut_ptr; 
     5422        } 
     5423        /// <summary> 
     5424        /// 出力配列の各要素値をルックアップテーブルを用いて決定する.ルックアップテーブルが配列で指定できる簡易バージョン. 
     5425        /// </summary> 
     5426        /// <param name="src">入力配列(各要素は8ビットデータ)</param> 
     5427        /// <param name="dst">出力配列(任意のデプス,入力配列と同じチャンネル数)</param> 
     5428        /// <param name="lut">要素数が256であるルックアップテーブル</param> 
     5429        void CV::LUT( N::CvArr^ src, N::CvArr^ dst, array<Int16>^ lut ) 
     5430        { 
     5431                CHECK_NULL(src); 
     5432                CHECK_NULL(dst); 
     5433                CHECK_NULL(lut); 
     5434 
     5435                int type = 1; 
     5436                switch(dst->ElemChannels){ 
     5437                case 1: type = CV_8UC1; break; 
     5438                case 2: type = CV_8UC2; break; 
     5439                case 3: type = CV_8UC3; break; 
     5440                case 4: type = CV_8UC4; break; 
     5441                } 
     5442                ::CvMat* lut_mat = ::cvCreateMat(256, 1, type); 
     5443 
     5444                short* lut_ptr = ArrayConverter::ToNativeArray<Int16, short>(lut); 
     5445                ::cvSetData( lut_mat, lut_ptr, CV_AUTO_STEP ); 
     5446 
     5447                ::cvLUT(src->Ptr, dst->Ptr, lut_mat); 
     5448 
     5449                ::cvReleaseMat(&lut_mat); 
     5450                delete[] lut_ptr; 
     5451        } 
     5452        /// <summary> 
     5453        /// 出力配列の各要素値をルックアップテーブルを用いて決定する.ルックアップテーブルが配列で指定できる簡易バージョン. 
     5454        /// </summary> 
     5455        /// <param name="src">入力配列(各要素は8ビットデータ)</param> 
     5456        /// <param name="dst">出力配列(任意のデプス,入力配列と同じチャンネル数)</param> 
     5457        /// <param name="lut">要素数が256であるルックアップテーブル</param> 
     5458        void CV::LUT( N::CvArr^ src, N::CvArr^ dst, array<Int32>^ lut ) 
     5459        { 
     5460                CHECK_NULL(src); 
     5461                CHECK_NULL(dst); 
     5462                CHECK_NULL(lut); 
     5463 
     5464                int type = 1; 
     5465                switch(dst->ElemChannels){ 
     5466                case 1: type = CV_8UC1; break; 
     5467                case 2: type = CV_8UC2; break; 
     5468                case 3: type = CV_8UC3; break; 
     5469                case 4: type = CV_8UC4; break; 
     5470                } 
     5471                ::CvMat* lut_mat = ::cvCreateMat(256, 1, type); 
     5472 
     5473                int* lut_ptr = ArrayConverter::ToNativeArray<Int32, int>(lut); 
     5474                ::cvSetData( lut_mat, lut_ptr, CV_AUTO_STEP ); 
     5475 
     5476                ::cvLUT(src->Ptr, dst->Ptr, lut_mat); 
     5477 
     5478                ::cvReleaseMat(&lut_mat); 
     5479                delete[] lut_ptr; 
     5480        } 
     5481        /// <summary> 
     5482        /// 出力配列の各要素値をルックアップテーブルを用いて決定する.ルックアップテーブルが配列で指定できる簡易バージョン. 
     5483        /// </summary> 
     5484        /// <param name="src">入力配列(各要素は8ビットデータ)</param> 
     5485        /// <param name="dst">出力配列(任意のデプス,入力配列と同じチャンネル数)</param> 
     5486        /// <param name="lut">要素数が256であるルックアップテーブル</param> 
     5487        void CV::LUT( N::CvArr^ src, N::CvArr^ dst, array<Single>^ lut ) 
     5488        { 
     5489                CHECK_NULL(src); 
     5490                CHECK_NULL(dst); 
     5491                CHECK_NULL(lut); 
     5492 
     5493                int type = 1; 
     5494                switch(dst->ElemChannels){ 
     5495                case 1: type = CV_8UC1; break; 
     5496                case 2: type = CV_8UC2; break; 
     5497                case 3: type = CV_8UC3; break; 
     5498                case 4: type = CV_8UC4; break; 
     5499                } 
     5500                ::CvMat* lut_mat = ::cvCreateMat(256, 1, type); 
     5501 
     5502                float* lut_ptr = ArrayConverter::ToNativeArray<Single, float>(lut); 
     5503                ::cvSetData( lut_mat, lut_ptr, CV_AUTO_STEP ); 
     5504 
     5505                ::cvLUT(src->Ptr, dst->Ptr, lut_mat); 
     5506 
     5507                ::cvReleaseMat(&lut_mat); 
     5508                delete[] lut_ptr; 
     5509        } 
     5510        /// <summary> 
     5511        /// 出力配列の各要素値をルックアップテーブルを用いて決定する.ルックアップテーブルが配列で指定できる簡易バージョン. 
     5512        /// </summary> 
     5513        /// <param name="src">入力配列(各要素は8ビットデータ)</param> 
     5514        /// <param name="dst">出力配列(任意のデプス,入力配列と同じチャンネル数)</param> 
     5515        /// <param name="lut">要素数が256であるルックアップテーブル</param> 
     5516        void CV::LUT( N::CvArr^ src, N::CvArr^ dst, array<Double>^ lut ) 
     5517        { 
     5518                CHECK_NULL(src); 
     5519                CHECK_NULL(dst); 
     5520                CHECK_NULL(lut); 
     5521 
     5522                int type = 1; 
     5523                switch(dst->ElemChannels){ 
     5524                case 1: type = CV_8UC1; break; 
     5525                case 2: type = CV_8UC2; break; 
     5526                case 3: type = CV_8UC3; break; 
     5527                case 4: type = CV_8UC4; break; 
     5528                } 
     5529                ::CvMat* lut_mat = ::cvCreateMat(256, 1, type); 
     5530 
     5531                double* lut_ptr = ArrayConverter::ToNativeArray<Double, double>(lut); 
     5532                ::cvSetData( lut_mat, lut_ptr, CV_AUTO_STEP ); 
     5533 
     5534                ::cvLUT(src->Ptr, dst->Ptr, lut_mat); 
     5535 
     5536                ::cvReleaseMat(&lut_mat); 
     5537                delete[] lut_ptr; 
    53955538        } 
    53965539        #pragma endregion  
  • lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp/CV.h

    r23006 r23036  
    375375                static void LogPolar( N::CvArr^ src, N::CvArr^ dst, N::CvPoint2D32f center, Double M, Interpolation flags ); 
    376376                static void LUT( N::CvArr^ src, N::CvArr^ dst, N::CvArr^ lut ); 
     377                static void LUT( N::CvArr^ src, N::CvArr^ dst, array<Byte>^ lut ); 
     378                static void LUT( N::CvArr^ src, N::CvArr^ dst, array<Int16>^ lut ); 
     379                static void LUT( N::CvArr^ src, N::CvArr^ dst, array<Int32>^ lut ); 
     380                static void LUT( N::CvArr^ src, N::CvArr^ dst, array<Single>^ lut ); 
     381                static void LUT( N::CvArr^ src, N::CvArr^ dst, array<Double>^ lut ); 
    377382                static N::CvMat^ Mat( Int32 rows, Int32 cols, MatrixType type ); 
    378383                static N::CvMat^ Mat( Int32 rows, Int32 cols, MatrixType type, array<Byte>^ data ); 
  • lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp/CvArr.cpp

    r23006 r23036  
    13821382        } 
    13831383        #pragma endregion 
     1384        #pragma region LUT 
     1385        /// <summary> 
     1386        /// 出力配列の各要素値をルックアップテーブルを用いて決定する (cvLUT相当). 
     1387        /// </summary> 
     1388        /// <param name="dst">出力配列(任意のデプス,入力配列と同じチャンネル数).</param> 
     1389        /// <param name="lut">要素数が256であるルックアップテーブル(出力配列と同じデプスでなければならない).マルチチャンネルの入力/出力配列の場合,テーブルはシングルチャンネル(この場合すべてのチャンネル対して,同じテーブルを使う)か,入力/出力配列と同じチャンネル数でなければならない.</param> 
     1390        void CvArr::LUT( N::CvArr^ dst, N::CvArr^ lut ) 
     1391        { 
     1392                CV::LUT(this, dst, lut); 
     1393        } 
     1394        /// <summary> 
     1395        /// 出力配列の各要素値をルックアップテーブルを用いて決定する (cvLUT相当).ルックアップテーブルが配列で指定できる簡易バージョン. 
     1396        /// </summary> 
     1397        /// <param name="dst">出力配列(任意のデプス,入力配列と同じチャンネル数)</param> 
     1398        /// <param name="lut">要素数が256であるルックアップテーブル</param> 
     1399        void CvArr::LUT( N::CvArr^ dst, array<Byte>^ lut ) 
     1400        { 
     1401                CV::LUT(this, dst, lut); 
     1402        } 
     1403        /// <summary> 
     1404        /// 出力配列の各要素値をルックアップテーブルを用いて決定する (cvLUT相当).ルックアップテーブルが配列で指定できる簡易バージョン. 
     1405        /// </summary> 
     1406        /// <param name="dst">出力配列(任意のデプス,入力配列と同じチャンネル数)</param> 
     1407        /// <param name="lut">要素数が256であるルックアップテーブル</param> 
     1408        void CvArr::LUT( N::CvArr^ dst, array<Int16>^ lut ) 
     1409        { 
     1410                CV::LUT(this, dst, lut); 
     1411        } 
     1412        /// <summary> 
     1413        /// 出力配列の各要素値をルックアップテーブルを用いて決定する (cvLUT相当).ルックアップテーブルが配列で指定できる簡易バージョン. 
     1414        /// </summary> 
     1415        /// <param name="dst">出力配列(任意のデプス,入力配列と同じチャンネル数)</param> 
     1416        /// <param name="lut">要素数が256であるルックアップテーブル</param> 
     1417        void CvArr::LUT( N::CvArr^ dst, array<Int32>^ lut ) 
     1418        { 
     1419                CV::LUT(this, dst, lut); 
     1420        } 
     1421        /// <summary> 
     1422        /// 出力配列の各要素値をルックアップテーブルを用いて決定する (cvLUT相当).ルックアップテーブルが配列で指定できる簡易バージョン. 
     1423        /// </summary> 
     1424        /// <param name="dst">出力配列(任意のデプス,入力配列と同じチャンネル数)</param> 
     1425        /// <param name="lut">要素数が256であるルックアップテーブル</param> 
     1426        void CvArr::LUT( N::CvArr^ dst, array<Single>^ lut ) 
     1427        { 
     1428                CV::LUT(this, dst, lut); 
     1429        } 
     1430        /// <summary> 
     1431        /// 出力配列の各要素値をルックアップテーブルを用いて決定する (cvLUT相当).ルックアップテーブルが配列で指定できる簡易バージョン. 
     1432        /// </summary> 
     1433        /// <param name="dst">出力配列(任意のデプス,入力配列と同じチャンネル数)</param> 
     1434        /// <param name="lut">要素数が256であるルックアップテーブル</param> 
     1435        void CvArr::LUT( N::CvArr^ dst, array<Double>^ lut ) 
     1436        { 
     1437                CV::LUT(this, dst, lut); 
     1438        } 
     1439        #pragma endregion  
    13841440        #pragma region Merge 
    13851441        /// <summary> 
  • lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp/CvArr.h

    r23006 r23036  
    315315                virtual void Line( Int32 x1, Int32 y1, Int32 x2, Int32 y2, CvColor color, Int32 thickness, LineType line_type); 
    316316                virtual void Line( Int32 x1, Int32 y1, Int32 x2, Int32 y2, CvColor color, Int32 thickness, LineType line_type, Int32 shift); 
     317                virtual void LUT( N::CvArr^ dst, N::CvArr^ lut ); 
     318                virtual void LUT( N::CvArr^ dst, array<Byte>^ lut ); 
     319                virtual void LUT( N::CvArr^ dst, array<Int16>^ lut ); 
     320                virtual void LUT( N::CvArr^ dst, array<Int32>^ lut ); 
     321                virtual void LUT( N::CvArr^ dst, array<Single>^ lut ); 
     322                virtual void LUT( N::CvArr^ dst, array<Double>^ lut ); 
    317323                virtual void Merge( N::CvArr^ src0, N::CvArr^ src1, N::CvArr^ src2, N::CvArr^ src3 ); 
    318324                virtual void Merge( array<N::CvArr^>^ src );