Changeset 23212
- Timestamp:
- 11/11/08 12:53:30 (5 years ago)
- Location:
- lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp
- Files:
-
- 6 modified
-
CV.cpp (modified) (8 diffs)
-
CV.h (modified) (2 diffs)
-
CvTrackbar.cpp (modified) (5 diffs)
-
CvTrackbar.h (modified) (2 diffs)
-
CvWindow.cpp (modified) (7 diffs)
-
CvWindow.h (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp/CV.cpp
r23095 r23212 6 6 #include "stdafx.h" 7 7 #include "CV.h" 8 #include "CvWindow.h" 8 9 9 10 using namespace System; … … 2033 2034 /// <summary> 2034 2035 /// 指定された名前と範囲のトラックバー(スライダ,レンジコントロールとも呼ばれる)を作成する. 2035 /// この関数の引数には,トラックバーの位置に同期する変数と,トラックバーの位置変化に応じて呼び出されるコールバック関数を指定する.2036 /// 作成されたトラックバーは,与えられたウィンドウの最上段に表示される.2037 /// </summary>2038 /// <param name="trackbar_name">トラックバーの名前</param>2039 /// <param name="window_name">トラックバーの親ウィンドウの名前</param>2040 /// <param name="value">スライダの初期位置。refで渡すので、この変数に現在のスライダの位置が随時更新される。</param>2041 /// <param name="count">スライダの最大値.最小値は常に 0.</param>2042 /// <param name="on_change">スライダの位置が変更されるたびに呼び出されるデリゲート</param>2043 /// <returns></returns>2044 Int32 CV::CreateTrackbar( String^ trackbar_name, String^ window_name, [In][Out] Int32% value, Int32 count, CvTrackbarCallbackHandler^ on_change )2045 {2046 CHECK_NULL(trackbar_name);2047 CHECK_NULL(window_name);2048 StringConverter^ conv1 = gcnew StringConverter(trackbar_name);2049 StringConverter^ conv2 = gcnew StringConverter(window_name);2050 pin_ptr<int> v_pin = &value;2051 if(on_change != nullptr){2052 CvTrackbarCallback callbackPtr = (CvTrackbarCallback)(void*)Marshal::GetFunctionPointerForDelegate(on_change);2053 return ::cvCreateTrackbar(conv1->ToCharPtr(), conv2->ToCharPtr(), v_pin, count, callbackPtr);2054 }else{2055 return ::cvCreateTrackbar(conv1->ToCharPtr(), conv2->ToCharPtr(), v_pin, count, NULL);2056 }2057 }2058 /// <summary>2059 /// 指定された名前と範囲のトラックバー(スライダ,レンジコントロールとも呼ばれる)を作成する.2060 /// この関数の引数には,トラックバーの位置に同期する変数と,トラックバーの位置変化に応じて呼び出されるコールバック関数を指定する.2061 /// 作成されたトラックバーは,与えられたウィンドウの最上段に表示される.2062 /// </summary>2063 /// <param name="trackbar_name">トラックバーの名前</param>2064 /// <param name="window_name">トラックバーの親ウィンドウの名前</param>2065 /// <param name="value">スライダの初期位置。refで渡すので、この変数に現在のスライダの位置が随時更新される。</param>2066 /// <param name="count">スライダの最大値.最小値は常に 0.</param>2067 /// <returns></returns>2068 Int32 CV::CreateTrackbar( String^ trackbar_name, String^ window_name, [In][Out] Int32% value, Int32 count )2069 {2070 CHECK_NULL(trackbar_name);2071 CHECK_NULL(window_name);2072 pin_ptr<int> v_pin = &value;2073 int* v_ptr = v_pin;2074 StringConverter^ conv1 = gcnew StringConverter(trackbar_name);2075 StringConverter^ conv2 = gcnew StringConverter(window_name);2076 return ::cvCreateTrackbar(conv1->ToCharPtr(), conv2->ToCharPtr(), v_ptr, count, NULL);2077 }2078 /// <summary>2079 /// 指定された名前と範囲のトラックバー(スライダ,レンジコントロールとも呼ばれる)を作成する.2080 /// この関数の引数には,トラックバーの位置に同期する変数と,トラックバーの位置変化に応じて呼び出されるコールバック関数を指定する.2081 2036 /// 作成されたトラックバーは,与えられたウィンドウの最上段に表示される. 2082 2037 /// </summary> … … 2088 2043 CHECK_NULL(trackbar_name); 2089 2044 CHECK_NULL(window_name); 2090 StringConverter^ conv1 = gcnew StringConverter(trackbar_name); 2091 StringConverter^ conv2 = gcnew StringConverter(window_name); 2092 return ::cvCreateTrackbar(conv1->ToCharPtr(), conv2->ToCharPtr(), 0, 100, NULL); 2093 } 2045 CvWindow^ w = CvWindow::GetWindowByName(window_name); 2046 if(w == nullptr){ 2047 throw gcnew Exception("指定されたウィンドウは存在しません."); 2048 } 2049 try{ 2050 w->CreateTrackbar(trackbar_name); 2051 return 1; 2052 }catch(Exception^){ 2053 return 0; 2054 } 2055 } 2056 /// <summary> 2057 /// 指定された名前と範囲のトラックバー(スライダ,レンジコントロールとも呼ばれる)を作成する. 2058 /// 作成されたトラックバーは,与えられたウィンドウの最上段に表示される. 2059 /// </summary> 2060 /// <param name="trackbar_name">トラックバーの名前</param> 2061 /// <param name="window_name">トラックバーの親ウィンドウの名前</param> 2062 /// <param name="value">スライダの初期位置</param> 2063 /// <param name="count">スライダの最大値.最小値は常に 0.</param> 2064 /// <returns></returns> 2065 Int32 CV::CreateTrackbar( String^ trackbar_name, String^ window_name, Int32 value, Int32 count ) 2066 { 2067 CHECK_NULL(trackbar_name); 2068 CHECK_NULL(window_name); 2069 CvWindow^ w = CvWindow::GetWindowByName(window_name); 2070 if(w == nullptr){ 2071 throw gcnew Exception("指定されたウィンドウは存在しません."); 2072 } 2073 try{ 2074 w->CreateTrackbar(trackbar_name, value, count); 2075 return 1; 2076 }catch(Exception^){ 2077 return 0; 2078 } 2079 } 2080 /// <summary> 2081 /// 指定された名前と範囲のトラックバー(スライダ,レンジコントロールとも呼ばれる)を作成する. 2082 /// 作成されたトラックバーは,与えられたウィンドウの最上段に表示される. 2083 /// </summary> 2084 /// <param name="trackbar_name">トラックバーの名前</param> 2085 /// <param name="window_name">トラックバーの親ウィンドウの名前</param> 2086 /// <param name="value">スライダの初期位置</param> 2087 /// <param name="count">スライダの最大値.最小値は常に 0.</param> 2088 /// <param name="on_change">スライダの位置が変更されるたびに呼び出されるデリゲート</param> 2089 /// <returns></returns> 2090 Int32 CV::CreateTrackbar( String^ trackbar_name, String^ window_name, Int32 value, Int32 count, CvTrackbarCallbackHandler^ on_change ) 2091 { 2092 CHECK_NULL(trackbar_name); 2093 CHECK_NULL(window_name); 2094 CvWindow^ w = CvWindow::GetWindowByName(window_name); 2095 if(w == nullptr){ 2096 throw gcnew Exception("指定されたウィンドウは存在しません."); 2097 } 2098 try{ 2099 w->CreateTrackbar(trackbar_name, value, count, on_change); 2100 return 1; 2101 }catch(Exception^){ 2102 return 0; 2103 } 2104 } 2094 2105 #pragma endregion 2095 2106 #pragma region CreateVideoWriter … … 2237 2248 void CV::DestroyAllWindows( void ) 2238 2249 { 2239 ::cvDestroyAllWindows(); 2250 //::cvDestroyAllWindows(); 2251 CvWindow::DestroyAllWindows(); 2240 2252 } 2241 2253 #pragma endregion … … 2247 2259 void CV::DestroyWindow( String^ name ) 2248 2260 { 2249 if(name == nullptr){2250 throw gcnew ArgumentNullException();2251 }2252 StringConverter^ conv = gcnew StringConverter(name);2253 ::cvDestroyWindow(conv->ToCharPtr());2261 CHECK_NULL(name); 2262 CvWindow^ w = CvWindow::GetWindowByName(name); 2263 if(w != nullptr){ 2264 w->Close(); 2265 } 2254 2266 } 2255 2267 #pragma endregion … … 6074 6086 { 6075 6087 CHECK_NULL(name); 6076 StringConverter^ conv = gcnew StringConverter(name); 6077 return ::cvNamedWindow(conv->ToCharPtr()); 6088 try{ 6089 gcnew N::CvWindow(name); 6090 return 0; 6091 }catch(Exception^){ 6092 return 1; 6093 } 6078 6094 } 6079 6095 /// <summary> … … 6087 6103 { 6088 6104 CHECK_NULL(name); 6089 StringConverter^ conv = gcnew StringConverter(name); 6090 return ::cvNamedWindow(conv->ToCharPtr(), (int)flags); 6105 try{ 6106 gcnew N::CvWindow(name, flags); 6107 return 0; 6108 }catch(Exception^){ 6109 return 1; 6110 } 6091 6111 } 6092 6112 #pragma endregion … … 8419 8439 CHECK_NULL(name); 8420 8440 CHECK_NULL(image); 8421 StringConverter^ conv = gcnew StringConverter(name); 8422 ::cvShowImage(conv->ToCharPtr(), image->Ptr); 8441 CvWindow^ w = CvWindow::GetWindowByName(name); 8442 if(w != nullptr){ 8443 w->Image = image; 8444 } 8423 8445 } 8424 8446 #pragma endregion -
lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp/CV.h
r23095 r23212 19 19 20 20 using namespace System; 21 using namespace System::Collections::Generic; 21 22 using namespace System::Runtime::InteropServices; 22 23 namespace N = KwsmLab::OpenCvSharp; … … 169 170 static N::CvSubdiv2D^ CreateSubdiv2D( SeqType subdiv_type, Int32 header_size, Int32 vtx_size, Int32 quadedge_size, N::CvMemStorage^ storage ); 170 171 static Int32 CreateTrackbar( String^ trackbar_name, String^ window_name ); 171 static Int32 CreateTrackbar( String^ trackbar_name, String^ window_name, [In][Out] Int32%value, Int32 count );172 static Int32 CreateTrackbar( String^ trackbar_name, String^ window_name, [In][Out] Int32%value, Int32 count, N::CvTrackbarCallbackHandler^ on_change );172 static Int32 CreateTrackbar( String^ trackbar_name, String^ window_name, Int32 value, Int32 count ); 173 static Int32 CreateTrackbar( String^ trackbar_name, String^ window_name, Int32 value, Int32 count, N::CvTrackbarCallbackHandler^ on_change ); 173 174 static N::CvVideoWriter^ CreateVideoWriter( String^ filename, String^ fourcc, Double fps, N::CvSize frame_size ); 174 175 static N::CvVideoWriter^ CreateVideoWriter( String^ filename, String^ fourcc, Double fps, N::CvSize frame_size, Boolean is_color ); -
lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp/CvTrackbar.cpp
r22623 r23212 12 12 CvTrackbar::CvTrackbar(String^ name, String^ window) 13 13 { 14 CHECK_NULL(name); 15 CHECK_NULL(window); 16 this->name = name; 17 this->window = window; 18 this->max = 100; 19 this->callback = nullptr; 20 int value = 0; 21 CV::CreateTrackbar(name, window, value, max, callback); 14 this->value = 0; 15 Initialize(name, window, this->value, 100, nullptr); 22 16 } 23 17 /// <summary> … … 29 23 CvTrackbar::CvTrackbar(String^ name, String^ window, CvTrackbarCallbackHandler^ callback) 30 24 { 31 CHECK_NULL(name); 32 CHECK_NULL(window); 33 this->name = name; 34 this->window = window; 35 this->max = 100; 36 this->callback = callback; 37 int value = 0; 38 CV::CreateTrackbar(name, window, value, max, callback); 25 this->value = 0; 26 Initialize(name, window, this->value, 100, callback); 39 27 } 40 28 /// <summary> … … 43 31 /// <param name="name">�g���b�N�o�[�̖��O</param> 44 32 /// <param name="window">�g���b�N�o�[�̐e�E�B���h�E��</param> 45 /// <param name="value">�X���C�_� ̈ʒu����C�����^�ϐ��̎Q�ƁD�쐬���̃X���C�_�ʒu�́C���̕ϐ��ɂ��Ē�����. ref�œn���̂ŁA�X���C�_�������Ƃ����Ɋ��蓖�Ă��ϐ��̒l��������/param>33 /// <param name="value">�X���C�_�̏���</param> 46 34 /// <param name="max">�X���C�_�̍ő��D�ŏ��l�͏� 0.</param> 47 CvTrackbar::CvTrackbar( String^ name, String^ window, [In][Out] Int32%value, Int32 max)35 CvTrackbar::CvTrackbar( String^ name, String^ window, Int32 value, Int32 max) 48 36 { 49 CHECK_NULL(name); 50 CHECK_NULL(window); 51 this->name = name; 52 this->window = window; 53 this->max = max; 54 this->callback = nullptr; 55 CV::CreateTrackbar(name, window, value, max, callback); 37 this->value = value; 38 Initialize(name, window, this->value, max, nullptr); 56 39 } 57 40 /// <summary> … … 59 42 /// <param name="name">�g���b�N�o�[�̖��O</param> 60 43 /// <param name="window">�g���b�N�o�[�̐e�E�B���h�E��</param> 61 /// <param name="value">�X���C�_� ̈ʒu����C�����^�ϐ��̎Q�ƁD�쐬���̃X���C�_�ʒu�́C���̕ϐ��ɂ��Ē�����. ref�œn���̂ŁA�X���C�_�������Ƃ����Ɋ��蓖�Ă��ϐ��̒l��������/param>44 /// <param name="value">�X���C�_�̏���</param> 62 45 /// <param name="max">�X���C�_�̍ő��D�ŏ��l�͏� 0.</param> 63 46 /// <param name="callback">�X���C�_�̈ʒu���ύX�������тɌĂяo�����f���Q�[�g</param> 64 CvTrackbar::CvTrackbar(String^ name, String^ window, [In][Out] Int32% value, Int32 max, CvTrackbarCallbackHandler^ callback) 47 CvTrackbar::CvTrackbar(String^ name, String^ window, Int32 value, Int32 max, CvTrackbarCallbackHandler^ callback) 48 { 49 this->value = value; 50 Initialize(name, window, this->value, max, callback); 51 } 52 53 /// <summary> 54 /// �e�R���X�g���N�^���ʂ̏��� /// </summary> 55 /// <param name="name">�g���b�N�o�[�̖��O</param> 56 /// <param name="window">�g���b�N�o�[�̐e�E�B���h�E��</param> 57 /// <param name="value">�X���C�_�̏���. �Q�Ɠn���ɂ��A���̕ϐ��Ɍ��݂̃X���C�_�̈ʒu�������X�V���� (!!!���AGC�ɂ��ǐՎQ�ƕs�\�ɂȂ��\����������tatic�ϐ���肷�邱��!!)</param> 58 /// <param name="max">�X���C�_�̍ő��D�ŏ��l�͏� 0.</param> 59 /// <param name="callback">�X���C�_�̈ʒu���ύX�������тɌĂяo�����f���Q�[�g</param> 60 void CvTrackbar::Initialize(String^ name, String^ window, [In][Out] Int32% value, Int32 max, CvTrackbarCallbackHandler^ callback) 65 61 { 66 62 CHECK_NULL(name); … … 70 66 this->max = max; 71 67 this->callback = callback; 72 CV::CreateTrackbar(name, window, value, max, callback); 68 69 StringConverter^ conv_n = gcnew StringConverter(name); 70 StringConverter^ conv_w = gcnew StringConverter(window); 71 int result; 72 this->gch_value = GCHandle::Alloc(value, GCHandleType::Pinned); 73 pin_ptr<int> v_pin = &value; 74 if(callback != nullptr){ 75 this->gch_callback = GCHandle::Alloc(callback); 76 CvTrackbarCallback callbackPtr = static_cast<CvTrackbarCallback>(Marshal::GetFunctionPointerForDelegate(callback).ToPointer()); 77 result = ::cvCreateTrackbar(conv_n->ToCharPtr(), conv_w->ToCharPtr(), v_pin, max, callbackPtr); 78 }else{ 79 result = ::cvCreateTrackbar(conv_n->ToCharPtr(), conv_w->ToCharPtr(), v_pin, max, NULL); 80 } 81 if(result == 0){ 82 throw gcnew Exception("CvTrackbar�̐����Ɏ��s���܂���."); 83 } 84 } 85 86 /// <summary> 87 /// ���� 88 /// </summary> 89 void CvTrackbar::Release( void ) 90 { 91 if ( this->gch_callback.IsAllocated ) { 92 this->gch_callback.Free(); 93 } 94 if ( this->gch_value.IsAllocated ) { 95 this->gch_value.Free(); 96 } 73 97 } 74 98 -
lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp/CvTrackbar.h
r22623 r23212 10 10 11 11 using namespace System; 12 using namespace System::Collections::Generic; 12 13 using namespace System::Runtime::InteropServices; 13 14 namespace N = KwsmLab::OpenCvSharp; … … 24 25 String^ name; 25 26 String^ window; 27 Int32 value; 26 28 Int32 max; 27 29 CvTrackbarCallbackHandler^ callback; 30 GCHandle gch_value; 31 GCHandle gch_callback; 32 33 void Initialize(String^ name, String^ window, [In][Out] Int32% value, Int32 max, CvTrackbarCallbackHandler^ callback); 34 28 35 internal: 29 36 CvTrackbar(String^ name, String^ window); 30 37 CvTrackbar(String^ name, String^ window, CvTrackbarCallbackHandler^ callback); 31 CvTrackbar(String^ name, String^ window, [In][Out] Int32% value, Int32 max); 32 CvTrackbar(String^ name, String^ window, [In][Out] Int32% value, Int32 max, CvTrackbarCallbackHandler^ callback); 38 CvTrackbar(String^ name, String^ window, Int32 value, Int32 max); 39 CvTrackbar(String^ name, String^ window, Int32 value, Int32 max, CvTrackbarCallbackHandler^ callback); 40 void Release( void ); 41 33 42 public: 34 43 /// <summary> -
lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp/CvWindow.cpp
r23095 r23212 5 5 namespace OpenCvSharp 6 6 { 7 #pragma region ������ 7 8 /// <summary> 8 9 /// �K���ȃE�B���h�E���ŏ��� /// </summary> 9 10 CvWindow::CvWindow(void) 10 11 { 11 this->name = GetDefaultWindowName(); 12 CV::NamedWindow(this->name); 13 this->isDisposed = false; 14 this->image = nullptr; 12 Initialize(nullptr, WindowMode::AutoSize, nullptr); 15 13 } 16 14 /// <summary> … … 19 17 CvWindow::CvWindow(WindowMode flags) 20 18 { 21 this->name = GetDefaultWindowName(); 22 CV::NamedWindow(this->name, flags); 23 this->isDisposed = false; 24 this->image = nullptr; 19 Initialize(nullptr, WindowMode::AutoSize, nullptr); 25 20 } 26 21 /// <summary> … … 29 24 CvWindow::CvWindow(N::CvArr^ image) 30 25 { 31 this->name = GetDefaultWindowName(); 32 CV::NamedWindow(this->name); 26 Initialize(nullptr, WindowMode::AutoSize, image); 27 } 28 /// <summary> 29 /// �K���ȃE�B���h�E���ŁA�摜�̕\�����[�h�Ǝn�߂��������Ă����摜��肵�ď��� /// </summary> 30 /// <param name="flags">�E�B���h�E�̃t���O</param> 31 /// <param name="image">�E�B���h�E�ɕ\��������</param> 32 CvWindow::CvWindow(WindowMode flags, N::CvArr^ image) 33 { 34 Initialize(nullptr, WindowMode::AutoSize, image); 35 } 36 /// <summary> 37 /// �E�B���h�E����肵�ď��� /// </summary> 38 /// <param name="name">�E�B���h�E�̎��ʂɗp�������B���h�E���ŁC�E�B���h�E�̃^�C�g���o �[�ɕ\�������D</param> 39 CvWindow::CvWindow(String^ name) 40 { 41 Initialize(name, WindowMode::AutoSize, nullptr); 42 } 43 /// <summary> 44 /// �E�B���h�E���Ɖ摜�̕\�����[�h��肵�ď��� /// </summary> 45 /// <param name="name">�E�B���h�E�̎��ʂɗp�������B���h�E���ŁC�E�B���h�E�̃^�C�g���o �[�ɕ\�������D</param> 46 /// <param name="flags">�E�B���h�E�̃t���O</param> 47 CvWindow::CvWindow(String^ name, WindowMode flags) 48 { 49 Initialize(name, flags, nullptr); 50 } 51 /// <summary> 52 /// �E�B���h�E���Ǝn�߂��������Ă����摜��肵�ď��� /// </summary> 53 /// <param name="name">�E�B���h�E�̎��ʂɗp�������B���h�E���ŁC�E�B���h�E�̃^�C�g���o �[�ɕ\�������D</param> 54 /// <param name="image">�E�B���h�E�ɕ\��������</param> 55 CvWindow::CvWindow(String^ name, N::CvArr^ image) 56 { 57 Initialize(name, WindowMode::AutoSize, image); 58 } 59 /// <summary> 60 /// �E�B���h�E���Ɖ摜�̕\�����[�h�Ǝn�߂��������Ă����摜��肵�ď��� /// </summary> 61 /// <param name="name">�E�B���h�E�̎��ʂɗp�������B���h�E���ŁC�E�B���h�E�̃^�C�g���o �[�ɕ\�������D</param> 62 /// <param name="flags">�E�B���h�E�̃t���O</param> 63 /// <param name="image">�E�B���h�E�ɕ\��������</param> 64 CvWindow::CvWindow(String^ name, WindowMode flags, N::CvArr^ image) 65 { 66 Initialize(name, flags, image); 67 } 68 /// <summary> 69 /// �R���X�g���N�^�̊e�I�[�o�[���[�h���ʂ̏����� 70 /// </summary> 71 /// <param name="name">�E�B���h�E�̎��ʂɗp�������B���h�E���ŁC�E�B���h�E�̃^�C�g���o �[�ɕ\�������D</param> 72 /// <param name="flags">�E�B���h�E�̃t���O</param> 73 /// <param name="image">�E�B���h�E�ɕ\��������</param> 74 void CvWindow::Initialize(String^ name, WindowMode flags, N::CvArr^ image) 75 { 76 this->name = (name == nullptr) ? GetDefaultWindowName() : name; 77 78 StringConverter^ conv = gcnew StringConverter(this->name); 79 int status = ::cvNamedWindow(conv->ToCharPtr(), (int)flags); 80 if(status == 0){ 81 throw gcnew Exception("CvWindow�̐����Ɏ��s���܂���."); 82 } 83 33 84 this->isDisposed = false; 34 85 this->Image = image; 35 } 36 /// <summary> 37 /// �K���ȃE�B���h�E���ŁA�摜�̕\�����[�h�Ǝn�߂��������Ă����摜��肵�ď��� /// </summary> 38 /// <param name="flags">�E�B���h�E�̃t���O</param> 39 /// <param name="image">�E�B���h�E�ɕ\��������</param> 40 CvWindow::CvWindow(WindowMode flags, N::CvArr^ image) 41 { 42 this->name = GetDefaultWindowName(); 43 CV::NamedWindow(this->name, flags); 44 this->isDisposed = false; 45 this->Image = image; 46 } 47 /// <summary> 48 /// �E�B���h�E����肵�ď��� /// </summary> 49 /// <param name="name">�E�B���h�E�̎��ʂɗp�������B���h�E���ŁC�E�B���h�E�̃^�C�g���o �[�ɕ\�������D</param> 50 CvWindow::CvWindow(String^ name) 51 { 52 CV::NamedWindow(name); 53 this->name = name; 54 this->isDisposed = false; 55 this->image = nullptr; 56 } 57 /// <summary> 58 /// �E�B���h�E���Ɖ摜�̕\�����[�h��肵�ď��� /// </summary> 59 /// <param name="name">�E�B���h�E�̎��ʂɗp�������B���h�E���ŁC�E�B���h�E�̃^�C�g���o �[�ɕ\�������D</param> 60 /// <param name="flags">�E�B���h�E�̃t���O</param> 61 CvWindow::CvWindow(String^ name, WindowMode flags) 62 { 63 CV::NamedWindow(name, flags); 64 this->name = name; 65 this->isDisposed = false; 66 this->image = nullptr; 67 } 68 /// <summary> 69 /// �E�B���h�E���Ǝn�߂��������Ă����摜��肵�ď��� /// </summary> 70 /// <param name="name">�E�B���h�E�̎��ʂɗp�������B���h�E���ŁC�E�B���h�E�̃^�C�g���o �[�ɕ\�������D</param> 71 /// <param name="image">�E�B���h�E�ɕ\��������</param> 72 CvWindow::CvWindow(String^ name, N::CvArr^ image) 73 { 74 CV::NamedWindow(name); 75 this->name = name; 76 this->isDisposed = false; 77 this->Image = image; 78 } 79 /// <summary> 80 /// �E�B���h�E���Ɖ摜�̕\�����[�h�Ǝn�߂��������Ă����摜��肵�ď��� /// </summary> 81 /// <param name="name">�E�B���h�E�̎��ʂɗp�������B���h�E���ŁC�E�B���h�E�̃^�C�g���o �[�ɕ\�������D</param> 82 /// <param name="flags">�E�B���h�E�̃t���O</param> 83 /// <param name="image">�E�B���h�E�ɕ\��������</param> 84 CvWindow::CvWindow(String^ name, WindowMode flags, N::CvArr^ image) 85 { 86 CV::NamedWindow(name, flags); 87 this->name = name; 88 this->isDisposed = false; 89 this->Image = image; 86 this->trackbars = gcnew Dictionary<String^, CvTrackbar^>(); 87 windows->Add(this->name, this); 90 88 } 91 89 /// <summary> … … 118 116 { 119 117 if(!this->isDisposed){ 120 this->isDisposed = true; 121 CV::DestroyWindow(this->name); 122 } 123 } 118 this->isDisposed = true; 119 StringConverter^ conv = gcnew StringConverter(name); 120 ::cvDestroyWindow(conv->ToCharPtr()); 121 for each(KeyValuePair<String^, CvTrackbar^>^ pair in trackbars){ 122 if(pair->Value != nullptr){ 123 pair->Value->Release(); 124 } 125 } 126 try{ 127 windows->Remove(this->Name); 128 }catch(Exception^){} 129 } 130 } 131 /// <summary> 132 /// �w�肵�����O�ɑΉ������B���h�E��� 133 /// </summary> 134 CvWindow^ CvWindow::GetWindowByName(String^ name){ 135 CHECK_NULL(name); 136 if(windows->ContainsKey(name)){ 137 return windows[name]; 138 }else{ 139 return nullptr; 140 } 141 } 142 /// <summary> 143 /// �S�Ă�HighGUI �E�B���h�E��� 144 /// </summary> 145 void CvWindow::DestroyAllWindows( void ) 146 { 147 for each(KeyValuePair<String^, CvWindow^>^ pair in windows){ 148 if(pair->Value != nullptr){ 149 pair->Value->Close(); 150 } 151 } 152 } 153 #pragma endregion 124 154 125 155 /// <summary> … … 129 159 CvTrackbar^ CvWindow::CreateTrackbar( String^ name ) 130 160 { 131 return gcnew CvTrackbar(name, this->Name); 161 CvTrackbar^ trackbar = gcnew CvTrackbar(name, this->Name); 162 this->trackbars->Add(name, trackbar); 163 return trackbar; 132 164 } 133 165 /// <summary> … … 138 170 CvTrackbar^ CvWindow::CreateTrackbar( String^ name, CvTrackbarCallbackHandler^ callback ) 139 171 { 140 return gcnew CvTrackbar(name, this->Name, callback); 141 } 142 /// <summary> 143 /// �E�B���h�E�Ƀg���b�N�o�[������A�쐬�����g���b�N�o�[��� 144 /// </summary> 145 /// <param name="name">�g���b�N�o�[�̖��O</param> 146 /// <param name="value">�X���C�_�̈ʒu����C�����^�ϐ��̎Q�ƁD�쐬���̃X���C�_�ʒu�́C���̕ϐ��ɂ��Ē�����. ref�œn���̂ŁA�X���C�_�������Ƃ����Ɋ��蓖�Ă��ϐ��̒l��������/param> 172 CvTrackbar^ trackbar = gcnew CvTrackbar(name, this->Name, callback); 173 this->trackbars->Add(name, trackbar); 174 return trackbar; 175 } 176 /// <summary> 177 /// �E�B���h�E�Ƀg���b�N�o�[������A�쐬�����g���b�N�o�[��� 178 /// </summary> 179 /// <param name="name">�g���b�N�o�[�̖��O</param> 180 /// <param name="value">�X���C�_�̈ʒu.</param> 147 181 /// <param name="max">�X���C�_�̍ő��D�ŏ��l�͏� 0.</param> 148 CvTrackbar^ CvWindow::CreateTrackbar( String^ name, [In][Out] Int32% value, Int32 max ) 149 { 150 return gcnew CvTrackbar(name, this->Name, value, max); 151 } 152 /// <summary> 153 /// �E�B���h�E�Ƀg���b�N�o�[������A�쐬�����g���b�N�o�[��� 154 /// </summary> 155 /// <param name="name">�g���b�N�o�[�̖��O</param> 156 /// <param name="value">�X���C�_�̈ʒu����C�����^�ϐ��̎Q�ƁD�쐬���̃X���C�_�ʒu�́C���̕ϐ��ɂ��Ē�����. ref�œn���̂ŁA�X���C�_�������Ƃ����Ɋ��蓖�Ă��ϐ��̒l��������/param> 182 CvTrackbar^ CvWindow::CreateTrackbar( String^ name, Int32 value, Int32 max ) 183 { 184 CvTrackbar^ trackbar = gcnew CvTrackbar(name, this->Name, value, max); 185 this->trackbars->Add(name, trackbar); 186 return trackbar; 187 } 188 /// <summary> 189 /// �E�B���h�E�Ƀg���b�N�o�[������A�쐬�����g���b�N�o�[��� 190 /// </summary> 191 /// <param name="name">�g���b�N�o�[�̖��O</param> 192 /// <param name="value">�X���C�_�̏���</param> 157 193 /// <param name="max">�X���C�_�̍ő��D�ŏ��l�͏� 0.</param> 158 194 /// <param name="callback">�X���C�_�̈ʒu���ύX�������тɌĂяo�����f���Q�[�g</param> 159 CvTrackbar^ CvWindow::CreateTrackbar( String^ name, [In][Out] Int32% value, Int32 max, CvTrackbarCallbackHandler^ callback ) 160 { 161 return gcnew CvTrackbar(name, this->Name, value, max, callback); 195 CvTrackbar^ CvWindow::CreateTrackbar( String^ name, Int32 value, Int32 max, CvTrackbarCallbackHandler^ callback ) 196 { 197 CvTrackbar^ trackbar = gcnew CvTrackbar(name, this->Name, value, max, callback); 198 this->trackbars->Add(name, trackbar); 199 return trackbar; 162 200 } 163 201 … … 188 226 void CvWindow::ShowImage(N::CvArr^ image) 189 227 { 190 this->image = image; 191 CV::ShowImage(this->name, image); 228 if(image != nullptr){ 229 this->image = image; 230 StringConverter^ conv = gcnew StringConverter(name); 231 ::cvShowImage(conv->ToCharPtr(), image->Ptr); 232 } 192 233 } 193 234 -
lang/cpluspluscli/OpenCvSharp/trunk/OpenCvSharp/CvWindow.h
r23095 r23212 25 25 { 26 26 private: 27 static Dictionary<String^, CvWindow^>^ windows = gcnew Dictionary<String^, CvWindow^>(); 28 27 29 Boolean isDisposed; 28 30 String^ name; 29 31 N::CvArr^ image; 30 32 CvMouseCallbackHandler^ mouseCallback; 33 Dictionary<String^, CvTrackbar^>^ trackbars; 31 34 35 void Initialize(String^ name, WindowMode flags, N::CvArr^ image); 32 36 String^ GetDefaultWindowName(void); 33 37 38 internal: 39 /// <summary> 40 /// �S�ẴE�B���h�E������邽�߂̎��� 41 /// </summary> 42 static property Dictionary<String^, CvWindow^>^ Windows{ 43 Dictionary<String^, CvWindow^>^ get(){ return windows; } 44 } 45 34 46 public: 47 #pragma region ���\�b�h 35 48 CvWindow(void); 36 49 CvWindow(WindowMode flags); … … 42 55 CvWindow(String^ name, WindowMode flags, N::CvArr^ image); 43 56 !CvWindow(void); 44 ~CvWindow(void); 57 ~CvWindow(void); 58 45 59 void Close(void); 46 60 CvTrackbar^ CreateTrackbar( String^ name ); 47 61 CvTrackbar^ CreateTrackbar( String^ name, CvTrackbarCallbackHandler^ callback ); 48 CvTrackbar^ CreateTrackbar( String^ name, [In][Out] Int32%value, Int32 max );49 CvTrackbar^ CreateTrackbar( String^ name, [In][Out] Int32%value, Int32 max, CvTrackbarCallbackHandler^ callback );62 CvTrackbar^ CreateTrackbar( String^ name, Int32 value, Int32 max ); 63 CvTrackbar^ CreateTrackbar( String^ name, Int32 value, Int32 max, CvTrackbarCallbackHandler^ callback ); 50 64 void Move( Int32 x, Int32 y ); 51 65 void Resize( Int32 width, Int32 height ); 52 66 void ShowImage( CvArr^ image ); 67 53 68 static Int32 WaitKey( void ); 54 69 static Int32 WaitKey( Int32 delay ); 55 70 static void ShowImages( ...array<N::CvArr^>^ images ); 56 71 static void ShowImages( WindowMode flags, ...array<N::CvArr^>^ images ); 72 static CvWindow^ GetWindowByName(String^ name); 73 static void DestroyAllWindows( void ); 74 #pragma endregion 75 76 #pragma region �v���p�e�B 77 /// <summary> 78 /// �o�^�����������b�N�o�[������� /// </summary> 79 property Dictionary<String^, CvTrackbar^>^ Trackbars{ 80 Dictionary<String^, CvTrackbar^>^ get(){ return trackbars; } 81 } 57 82 /// <summary> 58 83 /// �}�E�X�C�x���g�����������Ƃ��̃C�x���g�n���h�� … … 81 106 } 82 107 void set(N::CvArr^ value){ 83 this->image = value; 84 CV::ShowImage(this->name, image); 108 if(image != nullptr){ 109 this->image = value; 110 StringConverter^ conv = gcnew StringConverter(name); 111 ::cvShowImage(conv->ToCharPtr(), image->Ptr); 112 } 85 113 } 86 114 } … … 96 124 IntPtr get(void){ return CV::GetWindowHandle(name); } 97 125 } 126 #pragma endregion 98 127 }; 99 128
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)